security - Inkscape 的 --vacuum-defs 是否使 SVG 真正安全?

标签 security svg

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

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

这是真的吗?如果是这样,那么我们应该放心地接受不受信任的 SVG 就足够了吗?我们还应该做其他预处理吗?

最佳答案

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

因此,即使现代浏览器不执行 标签中找到的脚本,以防万一我认为最好从不同的域提供图像而不附加任何 cookie/auth,以便任何执行脚本不会损害用户的数据。这是我首先关心的问题。

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

关于security - Inkscape 的 --vacuum-defs 是否使 SVG 真正安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13054510/

相关文章:

android - Android SDK :How facebook check the Hash key?

javascript - 在 VSCode 中预览 JavaScript 内的 SVG

html - 当容器 ul 可见时绘制 svg 线条

ruby-on-rails - Rails回形针和SVG图像

c# - C# AES 算法何时会符合 FIPS 标准?

java - 在后端和其他服务之间保存用户登录的安全方法

c++ - 如何在 Linux 中生成真随机数(不是伪随机数)

ruby-on-rails - 有人试图进入我的服务器?

d3.js - StopPropagation() 与 SVG 元素和 G

svg - svg 路径边界框上的鼠标事件