https://digi.ninja/blog/svg_xss.php详细介绍了这一点。
它指出:
直接查看 - 易受攻击 - 文件直接链接。
通过内容处置直接查看:附件 - 不易受攻击 - 发送标头以强制下载文件。
使用 CSP 直接查看 - 不易受攻击 - 内容安全策略设置为禁止内联 JavaScript。
图像标签 - 不易受攻击 - SVG 通过防止脚本的图像标签引用。
带有 CSP 的标签 - 不易受攻击 - 图像标签和与上述相同的 CSP,实现双重保护。
通过 Inkscape 进行清理 - 易受攻击 - 这是直接视图,但文件已通过以下命令进行处理:
inkscape --file="xss.svg" --verb="FileVacuum" --export-plain-svg="sanitised.svg"
(预计这会删除 JavaScript,但事实并非如此。)
您也可以导出到不存在此问题的其他文件类型。在 Linux 上使用 Inkscape 的 CLI 的示例:
inkscape --export-type="png" /home/x/Pictures/example.svg
https://wiki.inkscape.org/wiki/index.php/Using_the_Command_Line 在“导出文件”下有更多信息。
编辑:以下项目实际上可以去掉 JavaScript: