内容安全政策是否可以与Google Analytics和AdSense兼容?

时间:2016-01-08 03:36:04

标签: javascript .htaccess google-analytics adsense content-security-policy

有没有人知道如何使用CSP(即使使用default-src通配符),以便现代分析脚本将网页每页数据(不仅仅是主页数据)发送到网站所有者的帐户,从而显示AdSense广告?

我为我的网站尝试了很多CSP版本,包括在< H5BP.com>的.htaccess文件中提出的,但是所有阻止Google Analytics都不会生成每页数据(主页除外)和Google AdSense在任何页面上接受广告。

谷歌的机器没有看到分析脚本,尽管谷歌的人类总是在我的网站源代码中看到它。即使将CSP default-src设置为星号通配符也失败。

在谷歌论坛和非谷歌论坛上发表的信息没有任何效果,只是人们说问题出在我的CSP上,我收到一封电子邮件说我应该完全评论CSP。最后一次工作。评论出来应该不比default-src通配符好,但是评论是我获得广告和网站内部数据的唯一方式。

没有Stack Overflow主题是关于CSP和AdSense的。当我提议H5BP在他们的模型中告诉用户< .htaccess>时,他们的受访者说它对他有用并且把我转介给你。

作为对建议的检查,是否有人在自己的Google Analytics帐户中看到特定于网页的数据,并在运行.htaccess CSP时看到AdSense广告?

5 个答案:

答案 0 :(得分:2)

没有。截至今日[9月16日]。我们禁用了CSP,因为Google框架源是特定于域的 - > frame-src:... google.co.uk google.co.fr ...

答案 1 :(得分:2)

<强>的AdSense

对于Google AdSense,例如这个CSP“有效”:

Content-Security-Policy: frame-ancestors 'self';

它可以防止您的网页被加框,而不会限制您的网页可以执行的操作。因此,它的XSS保护是不存在的。

但Adsense脚本可以加载加载的东西,然后加载等等。鉴于成千上万(在撰写本文时:3103)他们可以使用的第三方广告网络,根本没有合理的或可行的方法我们永远都知道所有这些都可能需要广告才能运作。因此,如果你想让Adsense不会发生,那么要限制你可以加载图片,flash,javascript等等。

其中一个:

  • Adsense
  • 限制性CSP

但不是两个。

分析

是另一个问题,已在其他回复中介绍过。 [不是用户]

CSP政策

需要提醒宽松的CSP政策的潜在作者,例如: https:*不包含unsafe-inlinedata:来源的权限。我在网络上看到了很多作者认为他们做过的地方。

在编写策略时,最好先放置一个仅报告的策略。 标题名为“Content-Security-Policy-Report-Only”而不是“Content-Security-Policy”,它不会停止任何操作,只需将json中的报告部分指定到指定的目标。见这里:https://developers.google.com/web/fundamentals/security/csp/#report-only

答案 2 :(得分:1)

使用以下代码对我有用:

default-src 'self' googleads.g.doubleclick.net;
script-src 'self' 'unsafe-inline' data: pagead2.googlesyndication.com storage.googleapis.com googleads.g.doubleclick.net ajax.googleapis.com; 
img-src 'self' data: storage.googleapis.com pagead2.googlesyndication.com; 
style-src 'self' 'unsafe-inline'; 
font-src 'self' fonts.googleapis.com; frame-ancestors 'self'; object-src 'self'

答案 3 :(得分:1)

或使用 report-uri 记录所有错误,以便向您的CSP添加来源。

JSON将POST到该URL(https://example.com/csp/log.php)。

Content-Security-Policy: default-src 'self';
report-uri: https://example.com/csp/log.php;

答案 4 :(得分:0)

对于严格的CSP 3和nonce,我认为这是可能的,但我没有能力进行测试,因为我们不使用AdSense。

1。)将所有javascript(GA,AdSense等)放入.js文件中。没有内联JS。

2。)使用建议的&#34; strict&#34; CSP:https://csp.withgoogle.com/docs/strict-csp.html

3.。)包括.js文件,因为您通常包含任何文件,但添加一个随机数:

<script src="/mygooganalytics.js" nonce="[your nonce here]"></script>

应该的效果是允许来自mygooganalytics.js的任何内容。 Nonce通常由服务器端代码(php,ruby等)创建,但如果这是在你的app /常规旧的html文件之外,你可以使用你的服务器生成一个nonce。如果您碰巧使用Apache:Generate a nonce with Apache 2.4 (for a Content Security Policy header)