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

时间:2016-03-15 21:33:29

标签: node.js google-chrome express content-security-policy body-parser

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

我已经尝试过了......

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

    1. 这是在Chrome中实现的吗?
    2. 实施是否与规格不同?
    3. 政策(通过HTTP标头发送)

        

      Content-Security-Policy-Report-Only:default-src' none' ;脚本-SRC   '自' '不安全-EVAL' https://www.google-analytics.com;风格-SRC   '自' '不安全直插' 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' ;   框架 - 祖先'无' ;形式行动' self' ;   升级不安全,请求;块全混合内容;反射XSS   块; base-uri https://*.mysite.com;引用   原点时交起点; report-uri / api / csp-report;

      更新...... 2016年3月16日

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

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

1 个答案:

答案 0 :(得分:6)

  • Chrome根据CSP规范级别2(https://www.w3.org/TR/CSP/#violation-reports)正确发送CSP报告"以及application / csp-report" 的Content-Type标头字段
  • 其他浏览器仍在发送CSP规范级别1中描述的application/json
  • 我接受了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']}));