javascript - 内容安全政策能否与 Google Analytics 和 AdSense 兼容?

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

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

我为我的网站尝试了多种 CSP 变体,包括 的 .htaccess 文件中提出的变体,但都阻止了 Google Analytics 生成每页数据(主页除外)和 Google AdSense 从接受任何页面上的广告。

Google 的机器看不到 Analytics 脚本,尽管 Google 的人总是在我的网站源代码中看到它。即使将 CSP default-src 设置为星号通配符也失败了。

在谷歌论坛和非谷歌论坛上询问都没有任何效果,除了人们说问题出在我的 CSP 上,我收到一封电子邮件,说我应该完全评论 CSP。这最后奏效了。注释掉应该不会比 default-src 通配符好,但注释掉是我获得广告和网站内部数据的唯一方式。

没有 Stack Overflow 线程是关于 CSP 和 AdSense 的。当我建议 H5BP 在他们的模型 <.htaccess> 中告诉用户这一点时,他们的受访者说这对他有用,并把我推荐给了你。

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

最佳答案

Adsense

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

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

它可以防止您的页面被加框,而不会限制您的页面可以做什么。因此它的 XSS 保护是不存在的。

但是 Adsense 脚本可以加载一些东西,这些东西会加载,而这些东西又会加载等等。考虑到他们可以使用的数千个(在撰写本文时:3103)第 3 方广告网络,根本没有合理或可行的方法来我们永远不知道他们所有人可能需要什么才能让广告发挥作用。因此,如果您想拥有 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

关于javascript - 内容安全政策能否与 Google Analytics 和 AdSense 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34669075/

相关文章:

javascript - AngularJS 用 Canvas 写在图像上

javascript - Redux Saga - 产量生成 takeEvery 调用无过载

.htaccess mod_rewrite - 如何从重写规则中排除目录

asp.net - 使用 Google Analytics 跟踪 ASP.NET Web API

javascript - 使用事件通过 Analytics 跟踪下载按钮点击

javascript - 将内容添加到每一行的开头,就像::before 对第一行所做的那样

javascript - MS Edge 继续越过所有断点

php - 通过 PHP 进行 HTTP 身份验证注销

php - Laravel 4 虚拟主机和 mod 重写设置

google-analytics - 以编程方式在不同 View 中跟踪子域以进行谷歌分析