有谁知道如何让 CSP(即使使用 default-src 通配符)工作,以便现代 Analytics 脚本将网站每页数据(不仅仅是主页数据)发送到网站所有者的帐户,从而显示 AdSense 广告?
我为我的网站尝试了多种 CSP 变体,包括
Google 的机器看不到 Analytics 脚本,尽管 Google 的人总是在我的网站源代码中看到它。即使将 CSP default-src 设置为星号通配符也失败了。
在谷歌论坛和非谷歌论坛上询问都没有任何效果,除了人们说问题出在我的 CSP 上,我收到一封电子邮件,说我应该完全评论 CSP。这最后奏效了。注释掉应该不会比 default-src 通配符好,但注释掉是我获得广告和网站内部数据的唯一方式。
大约一个月前,我向 Google 发布了有关不兼容性的帖子,但没有人反驳这一点 (https://www.en.advertisercommunity.com/t5/Code-Implementation/content-security-policy-and-Analytics-and-likely-AdSense/m-p/491031)。
Stack Overflow 的答案在 < Google Analytics and Content-Security-Policy header > 不要表明任何人正在获取网站内的分析数据,并且该线程基于过时的 Google 脚本。
线程 < Google analytics.js and Content Security Policy > 适用于应用程序,而不是网站,没有人报告获得网站内分析数据,即使使用最宽松的 CSP,我的努力也失败了。
解决方案在线程 < Google analytics Universal code not tracking 中> 但解决方案仅限于将 CSP 设置为报告,而不是阻塞,这对我来说用处不大。
没有 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-inline
和 data:
来源的许可。我在网络上看到很多作者认为他们这样做的地方。
在编写政策时,最好先放一个仅供报告使用的政策。 标题被命名为“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/