Back to blog

Markdown 渲染的 XSS 防线

Nov 3, 2026VrmMate Team

用户写的内容是数据,不是 HTML,渲染前必须清洗。

允许用户写 Markdown,就等于允许用户构造链接、图片和富文本,这些都可能被用来注入。

关闭原始 HTML

除非确有必要,渲染 Markdown 时关闭内联 HTML。需要富文本时,用白名单清洗标签与属性。

链接协议

只允许 http、https 和 mailto,禁止 javascript 与 data 协议。外链统一加 rel,避免反向标签劫持。

图片

限制图片域名白名单或走自己的代理,防止通过图片请求泄露访客 IP 与 referer。

富文本预览

预览必须与服务端渲染使用同一套清洗逻辑,不能前端一套、后端一套。两套规则迟早会不一致。