返回博客

处理不可信 SVG 文件的安全检查清单

SVG 是具备渲染与脚本能力的 XML,不是被动位图。未知 SVG 在完成检查和清理前,应被视为主动内容。

检查主动内容

查找 script 元素、事件处理属性、foreignObject、动画、链接和可能触发外部行为的样式规则。只删除一个 script 标签并不足以消除其他主动机制。

检查外部引用

图片、字体、滤镜、CSS 和链接可能引用远程 URL 或本地 fragment。确认每个引用是否必要,并移除或内联不应访问其他来源的资源。

选择更安全的嵌入方式

作为图片加载的 SVG,与 inline SVG 或 object 元素拥有不同能力。应选择能够满足显示和交互需求的最低权限嵌入方式。

清理并验证

生产上传应使用持续维护的 sanitizer 或明确 allowlist。请在隔离环境中渲染清理结果、比较外观,并在条件允许时配置严格的 Content Security Policy。