如果我遇到空的CSP违规,我该怎么办?

时间:2015-08-19 22:01:42

标签: web content-security-policy

我使用Content Security Policy。我得到了这样真实有用的警告:

CSP violation! 
{ 'csp-report':
    { 'document-uri': 'about:blank',
        referrer: '',
        'violated-directive': 'img-src \'self\' data: pbs.twimg.com syndication.twitter.com p.typekit.net',
        'original-policy': 'longPolicyGoesHere',
        'blocked-uri': 'https://platform.twitter.com',
        'source-file': 'https://platform.twitter.com',
        'line-number': 2 } }

很酷,我需要将'platform.twitter.com'添加为img-src

但有时我会得到像这样的空白CSP警告:

CSP violation! 
{}

即,有一个POST,但JSON是空的。我该怎么办?

1 个答案:

答案 0 :(得分:1)

我发现问题所在;对您来说可能不是问题。

由于CSP报告程序使用POST方法调用report-uri文件,因此我假设$ _POST变量将包含发布的数据。事实证明这是错误的,因为数据不是从表单或文件上传中发送的(请参见PHP "php://input" vs $_POST)。

以下代码非常适合我(由于https://mathiasbynens.be/notes/csp-reports中略有错误的代码的启发):

<?php
// Receive and log Content-Security-Policy report

// (WriteLog function omitted here: it just writes text into a log file)

$data=file_get_contents('php://input');
if (!$data) // Data is usually non-empty
    exit(0);

// Prettify the JSON-formatted data.
$val=json_decode($data);
$data = json_encode($val,JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
WriteLog($data);
?>