为什么这是 CSP 违规? blocked-uri = self 当 'self' 被明确允许时

Why is this a CSP violation? blocked-uri = self when 'self' is explicitly allowed

我无法理解下面的 CSP 违规报告(由 FireFox 44.0.2 / Ubuntu 发送)。这里真正被阻止的是什么,为什么? 应该注意的是,我将 'self' 或(如报告中自动翻译的那样)https://www.example.com 写入 CSP header 并不重要。 另外,我不知道呈现的页面中缺少任何内容。 那么我能做些什么呢? (显然,如果每个页面都触发虚假违规报告,我不应该在我的实时网站中添加报告)

{
    "csp-report":{
        "blocked-uri":"self",
        "document-uri":"https://www.example.com/foo/bar/baz.html",
        "original-policy":"report-uri https://reportserver.example.com/ContentSecurityPolicy-report.php; 
            default-src https://www.example.com; 
            style-src https://example.com https://www.example.com https://fonts.googleapis.com; 
            script-src https://www.example.com https://code.jquery.com https://ajax.googleapis.com; 
            font-src https://fonts.gstatic.com",
        "referrer":"https://www.example.com/foo/bar/wtf.html",
        "source-file":"https://www.example.com/foo/bar/baz.html",
        "violated-directive":"style-src https://example.com https://www.example.com https://fonts.googleapis.com"
    }
}

通过将您的政策设置为:

default-src 'self'; style-src example.com www.example.com 'self' https://fonts.googleapis.com 'unsafe-inline'; script-src 'self' https://code.jquery.com https://ajax.googleapis.com; font-src https://fonts.gstatic.com 'self';

我没有看到任何违规行为。我将 'unsafe-inline' 添加到 style src,将 'self' 添加到 font-src.

我看过这种对用户代理没有任何意义的 CSP 报告(2021 年 9 月)

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0

我假设它要么是更新的浏览器遇到了一些旧错误,要么是一些浏览器扩展改变了用户代理和浏览器行为。

是的,服务器发出的 Content-Security-Policy 确实包含 script-src 'self' 'report-sample' ...,即使报告的 violated-directive 既不包含 self 也不包含 report-sample。我没有费心用那个旧的 Firefox 进行测试,但我假设它不支持 'report-sample' 并且它会导致它错误地解析导致 'self' 也被删除的策略。

如果您从一些更现代的用户代理看到同样的报告,我很想了解有关您的案例的更多详细信息。

此错误也可能与以下相关:https://bugzilla.mozilla.org/show_bug.cgi?id=1236222