report-uri 缺少内容安全策略违规详细信息

Content Security Policy violation details missing on report-uri

Chrome 正在向 report-uri 报告违反内容安全政策的情况,但未报告任何违规细节。它报告 {} 而不是提供有关违反政策的详细信息。所有其他浏览器似乎都能很好地报告违规细节。下面提供了我的政策。

我试过了...

  1. 将完整的绝对路径放在 report-uri 指令中。
  2. 使策略退出 Report-Only 模式
  3. 使政策更加简单,例如default-src 'none' ; report-uri /api/csp-report;
  4. 关闭我所有的扩展程序(虽然我在生产网站上看到这个来自 win 和 osx 访问者 chrome)
  5. 在 Canary 中测试
  6. "Reported an issue" in chrome(我猜它还没有被分类)

我还没有找到答案的问题

  1. 这在 Chrome 中实现了吗?
  2. 实现是否与规范不同?

政策(通过 HTTP Header 提供)

Content-Security-Policy-Report-Only: default-src 'none' ; script-src 'self' 'unsafe-eval' https://www.google-analytics.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' https://www.google-analytics.com ; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.servicesite.com; frame-src 'none' ; child-src 'none' ; frame-ancestors 'none' ; form-action 'self' ; upgrade-insecure-requests; block-all-mixed-content; reflected-xss block; base-uri https://*.mysite.com; referrer origin-when-cross-origin; report-uri /api/csp-report;

更新... 2016 年 3 月 16 日

这让我认为这是我的接收代码中的一个解析问题(node,express using body-parser)。但是,对于为什么这只会发生在 Chrome CSP 报告中,仍然感到困惑。所有其他浏览器的报告都正常通过。

  • Chrome 根据 CSP 规范级别 2 (https://www.w3.org/TR/CSP/#violation-reports)
  • 正确发送 CSP 报告 "with a Content-Type header field of application/csp-report"
  • 其他浏览器仍在发送 application/json CSP 规范级别 1
  • 中所述
  • 我正在接受 nodejs + expressjs + body-parser 的报告。默认情况下,正文解析器仅解析具有 content-type: application/json 的请求,必须包含 application/csp-report 作为要解析的有效内容类型。

改变了这个...

app.use(bodyParser.json());

为此...

app.use(bodyParser.json({type: ['application/json', 'application/csp-report']}));