内容安全政策报告-uri未被识别

时间:2017-08-14 14:21:41

标签: security parsing http-headers content-security-policy

我正在以仅报告模式设置内容安全策略。当我测试时,Google Chrome会出现此错误:

内容安全政策'default-src'self'; script-src'self''unsafe-inline'https://use.typekit.com https://js.hs-analytics.net https://google-analytics.com https://ajax.googleapis.com; font-src https://use.typekit.com; style-src'self''unsafe-inline'https://use.typekit.com; frame-src https://www.youtube.com;' 以仅报告模式提供,但未指定'report-uri';该政策将不起作用。请添加'report-uri'指令,或通过'Content-Security-Policy'标题提供政策。

以下是我的完整内容安全策略,我在网站的标题PHP文件中定义了HTTP标头:

header("Content-Security-Policy-Report-Only: default-src 'self'; 
        script-src 'self' 'unsafe-inline' https://use.typekit.com https://js.hs-analytics.net https://google-analytics.com https://ajax.googleapis.com;
        font-src https://use.typekit.com;
        style-src 'self' 'unsafe-inline' https://use.typekit.com;
        frame-src https://www.youtube.com;
        report-uri /csp-violations-report-endpoint;
");

我在web根目录中有一个文件夹:csp-violation-report-endpoint,其中有一个index.php文件来处理违规。

我不确定我做错了什么。我已阅读MDN's suggestions for report-uri并使用Google's example编写我的report-uri指令。

我应该尝试将report-uri指向根目录中的脚本吗?我应该尝试让它自己登录,还是需要解析器来处理它?我的脚本可能有问题吗? (如果有帮助,我可以加入)

编辑:我的Web浏览器可能忽略了report-uri指令(因为它已被弃用)并期望report-to指令,这就是为什么它不起作用但错误消息导致我相信情况并非如此。

1 个答案:

答案 0 :(得分:2)

我可能完全偏离基础,但是,如果您正如上图所示完全使用代码,那么您可能会发送一堆无效的标头。 HTTP标头必须存在于一行中,而您的标题则不存在。试试这个:

header(
    "Content-Security-Policy-Report-Only: default-src 'self'; " .
    "script-src 'self' 'unsafe-inline' https://use.typekit.com https://js.hs-analytics.net https://google-analytics.com https://ajax.googleapis.com; " .
    "font-src https://use.typekit.com; " .
    "style-src 'self' 'unsafe-inline' https://use.typekit.com; " .
    "frame-src https://www.youtube.com; " .
    "report-uri /csp-violations-report-endpoint; "
);