数据URL的内容安全策略img-src哈希

时间:2020-10-26 19:37:11

标签: css http content-security-policy

我试图将CSP img-src限制为我使用的一个图像,该图像恰好在我们的CSS中被编码为数据URL。像这样:

background-image: url('data:image/svg+xml;utf8,<svg width="14px"...');

我宁愿不只是通过执行“ img-src data:”来打开所有数据:图像,所以理想情况下,我想要做的就是使用哈希源格式:

img-src sha512-SHA_OF_DATA_URL_ABOVE

但是,我无法使它正常工作。我已经尝试过仅哈希 实际的SVG,并且包括mime-type和data方案,但是没有运气:

> echo -n "<svg width=\"14px\"..." | openssl dgst -sha512 -binary | openssl enc -A -base64 
> echo -n "image/svg+xml;utf8,<svg width=\"14px\"..." | openssl dgst -sha512 -binary | openssl enc -A -base64 
> echo -n "data:image/svg+xml;utf8,<svg width=\"14px\"..." | openssl dgst -sha512 -binary | openssl enc -A -base64 

当我将它们放在img-src中时,这些似乎都不起作用。我猜数据URL图像的奇怪边缘情况是否仅不支持哈希方法?

1 个答案:

答案 0 :(得分:1)

CSP2仅对内联脚本元素(https://www.w3.org/TR/CSP2/#script-src-hash-usage)和内联样式元素(https://www.w3.org/TR/CSP2/#style-src-hash-usage)实现了哈希用法。

CSP3通过SRI(https://www.w3.org/TR/CSP3/#external-hash)将用法哈希扩展到外部脚本

不支持通过哈希允许<img>元素,可能在将来。