如何让网页安全地修改用户的svg文件?

时间:2017-10-31 19:30:16

标签: javascript html svg same-origin-policy

我有一个页面+ javascript,它将用户SVG文件读入HTML<对象>的数据,然后使用javascript修改SVG的DOM。

编辑:用户使用类型为file的输入字段从他们自己的文件系统中选择一个文件。

这一切在firefox中运行良好,但是边缘和chrome都坚持引用单一来源政策(据我所知,铬吐出

  

使用原点" null"阻止了一个帧。从访问跨源框架。

而edge只是拒绝读取对象数据。)

如果我足够了解单一来源政策以及所涉及的风险,那么Edge和Chrome拒绝使用加载的SVG 是合法的。首先,我错了吗?

其次,我如何解决这个问题?有办法吗?是否让用户将SVG上传到服务器然后将其加载(以便它作为我的页面共享原点)工作 - 如果是这样,这样安全吗?

我正在寻找"正确的"这样做的方法:对我的网站安全,对用户安全等等。

由于

类似的问题:

道歉,如果我应该对这些问题做些什么,而不是再问一遍。我希望通过更多现有技术找到解决方案。

1 个答案:

答案 0 :(得分:1)

直接在HTML中使用Test?并将文件放入其中。

因为用户上传了自己的文件,所以没有风险。

你仍然应该验证svg文件是否确实是一个没有onload,<svg>等内部的有效svg文件。可以在不执行它的情况下验证svg。使用白名单策略并在使用<script>之前执行此操作。 (因为用户可能已经从攻击者那里收到了每封邮件的恶意svg文件)。永远不要相信用户输入。