更正CSP以允许<svg>中包含<image xhref:link =“ data”>

时间:2019-07-12 17:04:40

标签: image svg content-security-policy

我有一个包含图片的svg:

例如

<svg> <circle cx="38" cy="30" r="3"/> <image nonce="abcd" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." /> </svg>

我已设置CSP,以便将img-src限制为'self' 'nonce-abcd'

如果我通过加载该svg,则Chrome将按预期方式将其加载。但是,Firefox拒绝呈现。如果我直接从服务器在Chrome中加载SVG,它也将无法加载。

我了解这是因为Chrome不会将CSP应用于内嵌的SVG,而Firefox则会应用CSP。这也是为什么无法从Chrome的服务器路径中加载的原因(因为它应用了CSP)。

我不明白的是,当应用CSP时,错误为Refused to load the image 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...' because it violates the following Content Security Policy directive: "img-src 'self' 'nonce-abcd'".

如果我将CSP设置为包含data:,则在所有情况下都将加载图像。但我想避免这种情况,因为据我了解,它可能会留下攻击媒介。

还有其他选项可以加载图像吗?

0 个答案:

没有答案