【问题标题】:Mystery cached Content-Security-Policy ghost rejecting content while absent神秘缓存的 Content-Security-Policy 幽灵在缺席时拒绝内容
【发布时间】:2019-08-29 02:51:36
【问题描述】:

内容安全政策最近在我们的软件中实施,但因为它立即干扰了一些客户网站,我们将其删除(显然是混淆的):

header('Content-Security-Policy: [...]');

删除标题后并在使用 Waterfox 56 时(Firefox 65 和 Chrome 72 立即开始工作;Waterfox 56 有一个新的配置文件)无论 绝对没有一个请求设置了 Content-Security-Policy!

  • 内容安全策略:无法解析无效主机“report-sample”(未知)
  • 内容安全策略:忽略 script-src 或 style-src 中的“'unsafe-inline'”:指定了 nonce-source 或 hash-source(未知)
  • 内容安全策略:此站点 (https://[...]) 有一个没有报告 URI 的仅报告策略。 CSP 不会阻止也不会报告违反此政策的行为。 (未知)
  • 内容安全策略:页面设置观察到在 blob 处加载资源:[...]。正在发送 CSP 报告。 (未知)
  • 内容安全策略:忽略 script-src 中的“'unsafe-inline'”:指定了“strict-dynamic”(未知)
  • 内容安全策略:忽略 script-src 中的“https:”:指定了“严格动态”(未知)
  • 内容安全策略:忽略 script-src 中的“http:”:指定了“严格动态”

消除过程:

  • 在 Waterfox 56 中禁用缓存,问题仍然存在。
  • 当我们的服务器禁用标头时,Firefox 65 和 Chrome 72 立即开始工作。
  • 完全验证我们的服务器确实响应标题,即使是杂项文件。
  • 被拒绝的资源来自 Google Calendar API,它们有一个标头集,尽管不同浏览器上的相同请求会产生不同的结果,因此我们认为问题出在 Waterfox。

我想标题以某种方式被缓存...这很荒谬,因为我们总是出于开发目的禁用缓存,除非我们明确使用缓存。唯一已知的其他潜在因素是请求与 Google Calendar API 和响应标头相关。有一个带有content-security-policy script-src 'nonce-SHP3iUMj779E…self';report-uri /o/cspreport 标头集的请求:https://accounts.google.com/o/oauth2/iframe。然而,这将如何影响我们的客户网站显示内容的地方?


为 Waterfox 创建了一个新的配置文件,使用该新配置文件的请求确实有效。以下是仅存在于“有缺陷的”Waterfox 配置文件中的唯一错误:

内容安全策略:页面设置观察到加载 资源在 斑点:https://content.googleapis.com/4bafd6e0-ea6f-43b2-9b43-690cbcd6b691 (“script-src 'nonce-dxS2ZXb0sYV7IpK+nhCm6w' 'unsafe-inline'”)。一个 CSP 正在发送报告。 (未知)

设置 CSP 的混淆 URL:

https://accounts.google.com/o/oauth2/iframe#origin=https://www.example.com&rpcToken=123.456

该 URL 的 CSP:

script-src 'nonce-tdC4gM1/O5jBKPO3TfdC9w' 'unsafe-inline' 'strict-dynamic' https: http: 'unsafe-eval';object-src 'none';base-uri 'self';report-uri /o/cspreport

为什么 Google 会针对该 Waterfox 实例触发此错误?我已清除所有 cookie、存储等。我将继续尝试缩小范围配置文件导致问题。


Waterfox 配置文件的 prefs.js 文件是复制到新配置文件目录时破坏请求的源文件。我将按照我复制、测试和重复的方式分块重建文件,幸运的是这不是二进制文件。

【问题讨论】:

    标签: php firefox google-calendar-api content-security-policy waterfox


    【解决方案1】:

    以下文件和行破坏了 Google 日历的 API,并触发内容安全策略错误,导致请求失败:

    文件:AppData\Roaming\Waterfox\Profiles\56.0\prefs.js

    user_pref("network.cookie.cookieBehavior", 1);
    

    network.cookie.cookieBehavior 设置被描述为how third party cookies are handled。安装了 Chris Pederick 的 Web Developer 工具栏 (XUL),并在 Cookies 菜单下禁用了第三方 cookie。启用/禁用它们修复/复发问题。

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      相关资源
      最近更新 更多