关于safe-svg jar的SVG元素/属性定义依据及替代验证工具问询
SVG安全验证相关问题
我们使用safe-svg validator jar,它会基于自身定义的SVG_ELEMENTS和SVG_ATTRIBUTES集合验证SVG文件——如果SVG用到不在集合内的标签或属性就会触发违规,比如missing-glyph、font-face-src、xmlns:xodm、horiz-adv-x这些都是它不支持的标签/属性。现咨询两个问题:
SVG_ELEMENTS和SVG_ATTRIBUTES的有效/无效标签判定依据是什么?- 除safe-svg jar外,还有哪些SVG文件安全验证工具?
问题1:SVG_ELEMENTS和SVG_ATTRIBUTES的判定依据
safe-svg的元素与属性白名单,核心判定逻辑围绕安全风险过滤+基础展示需求:
- 优先排除高风险内容:所有涉及动态执行(如
script标签)、外部资源引用(可能加载恶意文件的属性)、非标准自定义命名空间(如xmlns:xodm)的元素/属性,都会被标记为无效。 - 仅保留静态绘图所需内容:只纳入用于基础图形渲染的元素(如
rect、circle、path)和属性(如fill、stroke);像missing-glyph、font-face-src这类和字体定制、特殊字形相关的内容,因不属于通用静态展示场景,且可能带来字体加载风险,所以不在白名单内。 - 部分参考W3C SVG标准,但最终以工具自身的安全优先级为准,并非完全照搬标准条目。
问题2:其他SVG安全验证工具
- DOMPurify:支持前端/Node.js环境,通过白名单机制清洗SVG,过滤危险元素与属性,直接输出安全的SVG字符串。
- SVG Sanitizer:.NET生态下的专用SVG清理工具,基于白名单过滤危险内容,适配.NET项目的SVG验证需求。
- Apache Batik:自带SVG解析与处理模块,可自定义规则检测并移除SVG中的脚本、危险元素等不安全内容。
- ImageMagick:作为图片处理工具,也支持SVG安全校验,可配置禁止外部资源加载、脚本执行等规则,处理时自动过滤风险内容。
内容的提问来源于stack exchange,提问作者Ind mat
相关产品推荐
相关产品推荐

