Chrome没有报告违反CSP的行为

时间:2019-06-15 01:12:15

标签: google-chrome content-security-policy

出于某种原因,Chrome(或至少是我的Chrome)未报告违反CSP的行为。它正确地拒绝显示禁止的内容,但是不报告违规行为。作为比较,Firefox报告违规情况很好。

Consider this page。您的浏览器不应在该页面中显示图像,因为该图像来自禁止的URL。 Chrome可以做到这一点。但是,Chrome浏览器不遵守report-to或report-uri指令(我同时拥有)。再次,Firefox遵守这些指令。

我了解浏览器可能会选择不报告多余的违规行为,但事实并非如此。 I've tried using different urls,没有一个产生报告。

我正在使用Chrome版本75.0.3770.90(正式版本)(64位)

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以收听“ securitypolicyviolation”事件并使用ajax或sendBeacon

报告
if(window.chrome){
  document.addEventListener('securitypolicyviolation', (e)=> {
    let data=JSON.stringify({
      'csp-report':{
        'blocked-uri': e.blockedURI,
        'document-uri': e.documentURI,
        'original-policy': e.originalPolicy,
        'referrer': e.referrer,
        'script-sample': e.sample,
        'source-file': e.sourceFile,
        'violated-directive': e.violatedDirective
      }
    });
    let reportUri='http://localhost:8080/api/csp-report';
    fetch(reportUri, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/csp-report'
      },
      body: data,
      credentials: "omit",
      cache: "no-cache",
      referrerPolicy: "no-referrer"
    });
  });
}