我们计划允许用户上传SVG文件和图标。问题是SVG文件可能包含JavaScript,因此非常容易受到注入攻击。
<svg
xmlns="http://www.w3.org/2000/svg"
width="780" height="550"
onload="(function(){ alert('doing something nasty') })()">
在使用svg文件时执行此代码。
我发现了nice library to manage SVG files。这有助于删除像onEVENT ='someJs()'这样的属性;但那仍不能帮我晚上睡觉。
那么怎么能以一种聪明的方式完全扫描JS代码的SVG文件呢?
答案 0 :(得分:1)
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,但事实并非如此。)