HTML标头内容安全策略未向文件报告

时间:2016-04-22 16:13:14

标签: .htaccess http-headers content-security-policy

在阅读an introduction to CSPCSP website后,我想在我的网站上获得CSP漏洞的反馈日志。

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

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

有效,但由于各种原因,还有其他实体仍然被屏蔽,因此我想设置一个CSP 报告。同样,在上面链接的文件中清楚地解释了这一点。

回到我的.htaccess我用以下代码替换:

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

我想将所有非自我请求报告到文件/csp_report_parser.txt中。我在.htaccess所在的同一个地方创建了这个文件,但文件无法填充,尽管来自firebug的反馈声明:

  

内容安全策略:页面的设置观察了https://www.google-analytics.com/analytics.js(“default-src http://mywebsite”)的资源加载情况。正在发送CSP报告。

其中许多人每次都在说“正在发送CSP报告”。此报告应发送到的文件存在,我已授予权限777但文件仍为空白。

我错过了哪些报告反馈到所述文件中?

我还尝试指定要报告的绝对URL,例如:

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

但是,尽管如上所述浏览器firebug语句,我的域上的此文件仍为空白。

1 个答案:

答案 0 :(得分:1)

虽然我期望以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);