Markdown 渲染的 XSS 防线
Nov 3, 2026VrmMate Team
用户写的内容是数据,不是 HTML,渲染前必须清洗。
允许用户写 Markdown,就等于允许用户构造链接、图片和富文本,这些都可能被用来注入。
关闭原始 HTML
除非确有必要,渲染 Markdown 时关闭内联 HTML。需要富文本时,用白名单清洗标签与属性。
链接协议
只允许 http、https 和 mailto,禁止 javascript 与 data 协议。外链统一加 rel,避免反向标签劫持。
图片
限制图片域名白名单或走自己的代理,防止通过图片请求泄露访客 IP 与 referer。
富文本预览
预览必须与服务端渲染使用同一套清洗逻辑,不能前端一套、后端一套。两套规则迟早会不一致。