内容安全策略不适用于 SHA256

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

我正在 RedHat 6 Apache 2.2 上为一些带有 JavaScript 链接到 Google 的 html 文件创建内容安全策略。我在

httpd.conf
文件中添加了以下代码作为站点的虚拟主机。

Header always set Content-Security-Policy-Report-Only: "default-src 'self' https:; script-src 'self' https: https://www.google-analytics.com https://ajax.googleapis.com; style-src inline: 'self' https: 'sha256-j0bVhc2Wj58RJgvcJPevapx5zlVLw6ns6eYzK/hcA04=' https://www.google-analytics.com https://ajax.googleapis.com; font-src 'self'; img-src 'self' https: data: https://www.google-analytics.com; form-action 'self'; frame-ancestors 'none'; connect-src 'self' https: https://www.google-analytics.com; child-src 'self'"

除非我使用“不安全内联”(我不想这样做),否则无法使该策略发挥作用。最新的 Chrome 浏览器在开发者模式下要求添加 SHA256 哈希值,我这样做了(见下文)。即使我添加了推荐的 SHA256 哈希 Chrome 仍然要求我添加它???

我没有正确处理 SHA256 哈希吗?任何帮助将不胜感激。

来自 Chrome 开发者控制台。

拒绝应用内联样式,因为它违反了以下规定 内容安全策略指令:“style-src inline:'self'https: 'sha256-j0bVhc2Wj58RJgvcJPevapx5zlVLw6ns6eYzK/hcA04=' https://www.google-analytics.com https://ajax.googleapis.com”。要么 'unsafe-inline' 关键字,一个哈希值 ('sha256-j0bVhc2Wj58RJgvcJPevapx5zlVLw6ns6eYzK/hcA04='),或随机数 需要 ('nonce-...') 才能启用内联执行。

apache google-chrome security content-security-policy
2个回答
0
投票

编辑:此错误中对此进行了讨论: https://bugs.chromium.org/p/chromium/issues/detail?id=546106 不完全遵循错误所说的内容,但似乎规范只允许脚本和样式标签使用 sha256 哈希值,而不允许内联脚本和样式使用 sha256 哈希值。看来您必须向您的策略添加“不安全散列属性”属性才能使其发挥作用。

但是尚不完全清楚这是否只是修复脚本部分或样式,也不清楚是否已发布。它肯定不会出现在也使用 WebKit 的 iOS 设备上,所以现在我只允许样式使用不安全内联。

原始答案(在添加上述答案之前,但为了避免混淆,请在下面添加评论)。

我看到一些问题:

  1. 错误提到了内容安全策略,但您的示例配置是“仅报告”标头。我在使用 Content-Security-Policy 和 Content-Security-Policy-Report-Only 时遇到了问题。他们应该是独立的,但事实并非如此。可能值得在没有人的情况下尝试一下,看看这是否是问题所在。
  2. 您的样式源包括
    inline:
    ,这不是有效的语法 AFAIK
  3. 您包括一般的
    https:
    指令,然后还包括特定的 https 站点 (
    https://www.google-analytics.com https://ajax.googleapis.com
    )

0
投票

看起来这是 Chromium 官方跟踪的一个错误。 您可以在这里找到链接:https://issues.chromium.org/issues/41211258?pli=1 这确实很烦人。我们无法使用此安全标头或功能。 使用

unsafe-inline
将会破坏“内容安全策略”的所有好处 你可以尝试一下邪恶程度较低的“
unsafe-hashes
”。 我认为目前我们还没有内联 java 脚本的解决方案。

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