清除 SVG 文件中的脚本与隐藏代码
07 根本不是照片格式——一种完全不同的风险
本站其他所有格式都是封装在二进制容器中的光栅化像素。SVG 不同:它是描述图形的纯 XML 文本,而 XML 可以包含
<script> 元素、内联事件处理程序(onload=、onclick=),或者 XXE
实体声明——这是真正的代码,而不仅仅是随文件传播的数据。这里几乎不存在 EXIF/GPS 风险(SVG 不是相机的输出),
但活动内容带来的风险是真实存在的,且是这一格式特有的。
深入了解:为什么 SVG 无法像其他格式那样被"清理"
并不存在一个安全的、可以保留下来的任意 XML/脚本子集,让您能只"删掉不好的那部分"——因此本工具根本不会尝试
这样做。任何 SVG 都会被光栅化:通过一个经过安全加固的渲染器渲染成扁平的像素,该渲染
器绝不会执行 <script> 内容,也绝不会在渲染过程中发起任何网络请求,得到的像素结果随后
会经历与其他任何格式相同的重建流程。输出结果始终是一张 PNG——这里刻意不存在所谓"已清理的 SVG"这种东西,
原因在对比页面中有详细说明。
在光栅化之前实际会报告哪些内容
报告会准确列出被舍弃之前发现的内容——<script> 元素、javascript: URI、内联事件
处理程序属性、<foreignObject> 元素,以及 DOCTYPE 实体声明——让您具体看到文件里到底有什么,
而不只是一条笼统的"已完成清理"提示。