返回博客
处理不可信 SVG 文件的安全检查清单
SVG 是具备渲染与脚本能力的 XML,不是被动位图。未知 SVG 在完成检查和清理前,应被视为主动内容。
检查主动内容
查找 script 元素、事件处理属性、foreignObject、动画、链接和可能触发外部行为的样式规则。只删除一个 script 标签并不足以消除其他主动机制。
检查外部引用
图片、字体、滤镜、CSS 和链接可能引用远程 URL 或本地 fragment。确认每个引用是否必要,并移除或内联不应访问其他来源的资源。
选择更安全的嵌入方式
作为图片加载的 SVG,与 inline SVG 或 object 元素拥有不同能力。应选择能够满足显示和交互需求的最低权限嵌入方式。
清理并验证
生产上传应使用持续维护的 sanitizer 或明确 allowlist。请在隔离环境中渲染清理结果、比较外观,并在条件允许时配置严格的 Content Security Policy。