内容安全策略:源数据

Content security policy: source data

我正在设置 Content security policy。我已经在仅报告模式下设置了基本规则以进行测试。

我不断收到有关脚本被阻止的报告,但来源只有 data:

 "csp-report": {
        "blocked-uri": "data",
        "document-uri": "http://www.example.com/page.html",
        "original-policy": "default-src http://www.example.com ...
        "violated-directive": "script-src 'unsafe-inline' http://www.example.com http://www.google-analytics.com;"
    }

即使我使用与导致此报告的访问者相同的浏览器类型访问同一页面,我也无法重现该报告。从 CSP 文档中,我找不到任何有关名为 data.

的源代码的信息

页面 http://www.example.com/page.html 主要是静态的 html 但在 <script> 标签之间有 Google 分析脚本:

<script type="text/javascript">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject'...
</script>

我网站的其他页面(包括首页)也使用了相同的脚本。然而只有页面 page.html 生成这些关于被阻止的 data.

的报告

这个被阻止的 uri data 是什么?访问者浏览器尝试加载的是我网站上的内容还是外部内容?

关于报告的小问题:它们是在一个浏览器上发生还是在所有浏览器上发生?

如果只有一个浏览器: script-srcblocked-uri: data 的违规行为可能来自插件。通过数据 URL 可能 加载 javascript 的模式不是您的。

如果所有浏览器: 如果您没有使用该模式,也许您的某个库正在使用。 Google 分析不使用该模式。

有关快速讨论,请参阅 https://twitter.com/Scott_Helme/status/710164802925142017

注意:允许 script-src data: 非常危险,或者至少与 'unsafe-inline' 一样危险。资料来源:http://webreflection.blogspot.com/2011/08/simulate-script-injection-via-data-uri.html