【问题标题】:CSP violation with hash带有哈希的 CSP 违规
【发布时间】:2020-11-30 16:39:59
【问题描述】:

我有一个我们正在导入的 JS 文件

<script src="https://example.com/file.js"/>

我有一个 CSP 策略,其中包含当我将此文件的输出粘贴到时生成的哈希:https://report-uri.com/home/hash

但我仍然收到一条错误消息,说它违反了这个 SHA256 校验和。我究竟做错了什么?那不是假设有文件的校验和吗?

【问题讨论】:

    标签: content-security-policy


    【解决方案1】:

    仅在 CSP 级别 3 https://www.w3.org/TR/CSP3/#external-hash 中支持外部文件的哈希。许多浏览器仍然只支持级别 2。

    对于 CSP 2 级浏览器,您需要包含实际的主机名,例如 example.com。您可以通过子资源完整性(SRI 哈希)实现相同的脚本白名单。

    【讨论】:

    • 我在最新的 chrome 上运行。不知道为什么它仍然会发生。我的 CSP 策略还包含“严格动态”。
    【解决方案2】:
    1. report-uri.com计算外部脚本的哈希值,它仅用于字符串。因此,它只是从输入的文件名字符串计算哈希值,而不是从文件内容计算哈希值。
      可以计算外部文件的正确哈希值,例如,here
      并且不要忘记将integrity= 属性添加到&lt;script src='...' integrity='...'&gt;

    2. 请注意,Mozilla Firefox 对 外部 脚本执行 not support hash-sources,但仅用于内联脚本。
      Safari - 与 Firefox 相同(至少 Safari 12.1.1)。

    3. 'strict-dynamic' 令牌在 2020 年 12 月也不是 widely supported

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多