我有一个页面+ javascript,它将用户SVG文件读入HTML<对象>的数据,然后使用javascript修改SVG的DOM。
编辑:用户使用类型为file的输入字段从他们自己的文件系统中选择一个文件。
这一切在firefox中运行良好,但是边缘和chrome都坚持引用单一来源政策(据我所知,铬吐出
使用原点" null"阻止了一个帧。从访问跨源框架。
而edge只是拒绝读取对象数据。)
如果我足够了解单一来源政策以及所涉及的风险,那么Edge和Chrome拒绝使用加载的SVG 是合法的。首先,我错了吗?
其次,我如何解决这个问题?有办法吗?是否让用户将SVG上传到服务器然后将其加载(以便它作为我的页面共享原点)工作 - 如果是这样,这样安全吗?
我正在寻找"正确的"这样做的方法:对我的网站安全,对用户安全等等。
由于
类似的问题:
道歉,如果我应该对这些问题做些什么,而不是再问一遍。我希望通过更多现有技术找到解决方案。
答案 0 :(得分:1)
直接在HTML中使用Test?
并将文件放入其中。
因为用户上传了自己的文件,所以没有风险。
你仍然应该验证svg文件是否确实是一个没有onload,<svg>
等内部的有效svg文件。可以在不执行它的情况下验证svg。使用白名单策略并在使用<script>
之前执行此操作。 (因为用户可能已经从攻击者那里收到了每封邮件的恶意svg文件)。永远不要相信用户输入。