神秘的内容安全策略鬼魂在缺少内容的情况下拒绝了内容

时间:2019-04-08 01:40:05

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

尽管我们立即在我们的软件中实施了内容安全政策,但由于该政策立即干扰了某些客户端网站,因此我们将其删除(明显混淆):

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

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

  • 内容安全政策:无法解析无效的主机“报告样本”(未知)
  • 内容安全策略:在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配置文件中出现的唯一错误:

  

内容安全政策:该页面的设置已观察到   的资源   Blob: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实例触发此错误 just ?我已经清除了所有cookie,存储空间等。我将继续尝试缩小范围配置文件文件引起了问题。


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

1 个答案:

答案 0 :(得分:0)

以下文件和行破坏了Google Calendar的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被禁用。启用/禁用它们可以修复/重现此问题。