3

我们正在考虑允许用户在我们的网络应用程序中上传 SVG。由于我们知道不受信任的 SVG 中存在大量复杂漏洞,我们之前一直犹豫是否要这样做。一位同事发现了 Inkscape 的 --vacuum-defs 选项,并认为它可以使所有不受信任的 SVGS 安全处理。

根据手册页,该选项“从 SVG 文件的部分中删除所有未使用的项目。如果此选项与 --export-plain-svg 一起调用,则只有导出的文件会受到影响。如果单独使用,指定的文件将被原地修改。” 但是,根据我的同事的说法,“脚本被删除,XML 转换被删除,畸形是不能容忍的,编码被删除了,外部导入被删除了。

这是真的?如果是这样,是否足以让我们放心接受不受信任的 SVG?我们还应该做其他预处理吗?

4

1 回答 1

1

据我了解,提供不受信任的 SVG 的主要问题是 SVG 文件可以包含 Javascript。这对于 SVG 来说是显而易见的,因为嵌入的 javascript 是格式的一部分,但如果浏览器不小心,每种类型的上传文件都会发生这种情况。

因此,即使现代浏览器不执行 <img> 标签中的脚本,以防万一我认为最好在不附加 cookie/auth 的情况下提供来自不同域的图像,这样任何执行的脚本都不会泄露用户数据。这将是我首先关心的问题。

当然,如果用户下载了 SVG,然后从桌面打开它,碰巧用浏览器打开它,它可能会执行潜在的恶意加载。回到最初的问题,--export-plain-svg 确实删除了脚本,但由于我不知道其他 SVG 特定的漏洞,所以我没有检查它们。

于 2012-12-15T20:16:33.950 回答