HTML Header 内容安全策略未报告到文件

HTML Header Content Security Policy not reporting to file

阅读后 an introduction to CSP and the CSP website 我想在我的网站上获得 CSP 违规的反馈日志。

所以,我在我的 .htaccess 中设置了一个 header,如上面链接中所定义:

Header set Content-Security-Policy "default-src 'self' https://www.google-analytics.com https://www.jscache.com;"

有效 ,但由于各种原因还有其他实体仍被阻止,所以我想设置一个 CSP report .同样,上面链接的文档中清楚地解释了一些内容。

然后回到我的.htaccess,我将这一行替换为:

Header set Content-Security-Policy-Report-Only "default-src 'self'; report-uri /csp_report_parser.txt;"

我想将所有 non-self 请求报告到文件 /csp_report_parser.txt 中。我在与 .htaccess 相同的位置创建了这个文件,但文件未能填充,尽管 firebug 的反馈指出:

Content Security Policy: The page's settings observed the loading of a resource at https://www.google-analytics.com/analytics.js ("default-src http://mywebsite"). A CSP report is being sent.

其中许多每次都显示 "A CSP report is being sent"。此报告应发送到的文件存在,我已授予权限 777,但该文件仍为空白。

我错过了什么才能将此报告反馈写入所述文件?

我也试过指定一个绝对 URL 来报告,例如:

Header set Content-Security-Policy-Report-Only "default-src 'self'; report-uri http://mywebsite/csp_report_parser.txt;"

但是,尽管浏览器有上述 firebug 声明,我域中的这个文件仍然是空白的。

虽然我期待 JSON 格式的数据转储,但我实际需要的是处理要转储的传递数据 首先 ,使用 PHP json_decode 函数在将数据保存到文件之前。

$data = json_decode(file_get_contents('php://input'), true);
file_put_contents('csp_report_parser.txt',print_r($data,true),FILE_APPEND);