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

hem*_*eme 4 google-chrome node.js express content-security-policy body-parser

Chrome会向其报告内容安全策略违规行为report-uri,但不会报告违规详情.它报告{}而不是提供有关违反政策的详细信息.所有其他浏览器似乎都在报告违规细节.我的政策如下.

我试过了...

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

问题我还没有找到答案

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

该政策(通过HTTP标头发送)

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'un'; frame-ancestors'none'; 形式行动'自我'; 升级不安全,请求; 块全混合内容; 反射-xss块; base-uri https://*.mysite.com; 引用来源 - 当交叉起源; report-uri/api/csp-report;

更新... Mar-16-2016

  • Chrome正在发送报告.我在网络选项卡中看到了请求正文.还将其记录在中间nginx代理中.

这让我觉得这是我接收代码中的一个解析问题(节点,使用body-parser表达).但是,仍然对为什么这只会发生在Chrome CSP报告中而感到困惑.所有其他浏览器的报告通过就好了.

hem*_*eme 7

  • Chrome 根据CSP规范级别2(https://www.w3.org/TR/CSP/#violation-reports)正确发送CSP报告"带有应用程序/ csp-report的Content-Type标头字段"
  • 其他浏览器仍然application/json在CSP规范级别1中描述
  • 我正在接受nodejs + expressjs + body-parser的报告.默认情况下,body-parser仅解析具有content-type: application/json包含application/csp-report作为有效内容类型的请求以进行解析.

换了这个......

app.use(bodyParser.json());

对此......

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