为什么 Chrome 会声称此样式表违反了内容安全政策?

信息安全 内容安全策略
2021-08-16 23:00:23

我有一个网站,其中包含来自我自己的服务器的几个 CSS 样式表和来自远程服务器的一个样式表

我想以一种允许所有本地样式表的方式编写我的内容安全策略,并且只允许这个特定的远程样式表。这是我的尝试:

style-src 'self' 'sha256-L/W5Wfqfa0sdBNIKN9cG6QA5F2qx4qICmU2VgLruv9Y='

但是,在导航到我的网站时,Chrome 78 声称远程样式表与现有的内容安全策略不匹配并拒绝应用它。我看了这个类似的问题,解决方案是在哪里应用'unsafe-hashes',但这并没有解决我的问题。似乎外部包含的脚本和内联脚本之间存在差异。

所以我的问题是:为什么 Chrome 声称这个脚本是不允许的?我需要什么来允许这个脚本?(除了域的通用白名单)

1个回答

style-src 的文档中

'<hash-algorithm>-<base64-value>'
脚本或样式的 sha256、sha384 或 sha512 散列。...在 CSP 2.0 中,这适用于内联脚本CSP 3.0 允许在 script-src for external scripts 的情况下使用它

因此,基于此,散列规范不能用于外部样式,而只能用于内联样式。CSP 3.0 的行为更改仅允许以这种方式使用外部脚本,但不允许使用外部样式。