允许内容安全策略中的SVG没有'unsafe-eval'

问题描述 投票:0回答:2

SVG是网络的重要组成部分。有没有办法让Inkscape中创建的SVG与内容安全策略标头的安全设置一起使用?

我的SVG中有多个“http:// ...”链接,这些链接显然是必需的,当SVG更改为“https”时,SVG不再正确显示。

这些是我的SVG中的一些链接:

xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
rdf:resource="http://purl.org/dc/dcmitype/StillImage"

我想用我自己提供的链接替换链接并返回原始链接资源的副本,但我相信这不是这些链接的重点。是吗?

有没有办法修改这样的SVG来完全删除链接?

svg http-headers content-security-policy inkscape
2个回答
2
投票

您列出的“链接”只是一个非常奇特的单词链接。它们是namespace声明,用于标识某个元素或属性所属的XML方言。

是的,存在这些链接中的地址。但他们永远不会被召唤。只有“验证XML解释器”才能做到这一点,并且浏览器不在其中。浏览器仅将这些“链接”视为唯一字符串。如果他们知道字符串,他们将根据他们所代表的方言呈现内容。如果没有,则元素/属性将被输入到DOM中,但是对于实际呈现会被忽略 - 就像浏览器不知道的自定义元素一样。

Inkscape提供的SVG文件中有两个名称空间,浏览器可以理解:

  • xmlns="http://www.w3.org/2000/svg"
  • xmlns:xlink="http://www.w3.org/1999/xlink"

他们告诉浏览器一个独立的文件是SVG。必须包含它们(是的,对于xlink来说有点简化),但对CSP没有任何影响。


0
投票

我发现我的问题实际上是不同的,我问了一个错误的问题。我的问题与SVG中的style="fill:..."有关,导致浏览器中的SVG完全呈现黑色。这显然是一个known bug in Firefox,通过为SVG资源设置单独的CSP标头,有一个看似很好的workaround (that also addresses additional security threats)

© www.soinside.com 2019 - 2024. All rights reserved.