内容安全策略 img-src 数据 url 哈希
Posted
技术标签:
【中文标题】内容安全策略 img-src 数据 url 哈希【英文标题】:Content Security Policy img-src hash of data url 【发布时间】:2020-10-26 19:37:11 【问题描述】:我试图将我的 CSP img-src 限制为我使用的 one 图像,该图像恰好在我们的 css 中被编码为数据 URL。像这样的:
background-image: url('data:image/svg+xml;utf8,<svg ...');
我不希望通过执行“img-src data:”来打开所有数据:图像,所以理想情况下我想做的只是使用哈希源格式:
img-src sha512-SHA_OF_DATA_URL_ABOVE
但是,我无法让它工作。我试过散列只实际的 SVG,以及包括 mime 类型和数据方案,但没有运气:
> 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】: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>
元素,将来可能会支持。
【讨论】:
以上是关于内容安全策略 img-src 数据 url 哈希的主要内容,如果未能解决你的问题,请参考以下文章
来自不同域区域的内容安全策略和 Google Analytics 图像 [重复]
拒绝加载字体 '<URL>' 因为它违反了以下内容安全策略指令 default-src ,所以使用 default-src 作为后备