GUIDE深度 · Deep dive
Markdown 渲染的 XSS 风险
Markdown 允许内嵌 HTML 和链接,如果直接把用户输入塞进 innerHTML,就可能执行脚本或跳转到 javascript:。安全做法是先转义,再用白名单渲染。
两个入口
原始 HTML:<script>、onerror= 等。
链接协议:javascript:、data: 等。
防护
输入先 HTML 转义;只生成白名单标签。
链接只允许 http(s)/mailto/相对路径;加 CSP 和 sanitizer。
常见问题
转义就够了吗?
对纯文本够;富文本还要 sanitizer + CSP。
服务端也要处理吗?
要;输出到 HTML 的每一层都要按上下文处理。