Wordpress 内容安全策略问题

Posted

技术标签:

【中文标题】Wordpress 内容安全策略问题【英文标题】:Wordpress Content Security Policy Problem 【发布时间】:2021-09-28 22:37:09 【问题描述】:

我们的网站基于 WordPress 工具设计并发布在 Azure 网络服务上。我们的目标是使用谷歌分析来检查流量。由于这个事实,我们页面的标题部分添加了google分析标签,导致以下错误:

拒绝加载脚本“https://www.googletagmanager.com/gtag/js?id=??”因为它违反了以下内容安全策略指令:“script-src 'self' 'unsafe-eval' 'unsafe-inline' *.msecnd.net *.google.com *.gstatic.com”。请注意,'script-src-elem' 没有显式设置,因此 'script-src' 用作备用。

我了解违反内容安全政策是主要问题。因此,我在标题中添加了元(Content-Security-Policy: script-src 'unsafe-inline') 但问题并没有消失。我将不胜感激。

【问题讨论】:

【参考方案1】:

由于您违反了内容安全政策 (CSP),因此您已经在页面上发布了第一个 CSP。 通过元标记(甚至通过第二个 HTTP 标头)添加第二个 CSP 不会解决问题,因为所有源都应该通过两个 CSP 才能被允许。

因此,您必须将第一个 CSP 中的阻止源 (https://www.googletagmanager.com) 添加到 script-src 'self' 'unsafe-eval' 'unsafe-inline' *.msecnd.net *.google.com *.gstatic.com;。 检查您的 WP 是否安装了一些插件来管理 CSP,或者 CSP 是否发布在 .htaccess 文件中。

由于您在script-src 中有'unsafe-eval' 'unsafe-inline',因此您在使用 Google 跟踪代码管理器 (GTM) 时应该没有问题。 无论如何,您可以check CSP for your GTM-XXXXXX ID - GTM 会加载哪些附加脚本以及在您的特定情况下需要哪些令牌。

【讨论】:

感谢您的回复。您对第一个 CSP 有什么想法。是我添加的 CSP 还是导致问题的 CSP,并且似乎是自动添加的? 我的意思是自动添加的 CSP。默认情况下,您的 WP 已经发布了一些 CSP - 即使没有添加元标记,此 CSP 也会导致违规。这就是为什么元标记不能按预期工作的原因。你可以检查这个“默认CSP”是否存在,教程是here。 我检查并在我的 http 响应中得到以下 CSP: Content-Security-Policy: default-src 'unsafe-inline' data: https: blob:; script-src 'self' 'unsafe-eval' 'unsafe-inline' *.msecnd.net *.google.com *.gstatic.com;这是主要问题吗?我试图在 Kudo 的 wp-admin 目录中找到 .htaccess 文件,但它不存在。正常吗? 是的,这是主要问题。 script-src 'self' 'unsafe-eval' 'unsafe-inline' *.msecnd.net *.google.com *.gstatic.com; 被提及为违反 CSP 的原因。 WP 中的 CSP 也可以通过header() func 在 php 代码中公开。您必须找到此 CSP 的发布位置并在此处添加 https://www.googletagmanager.com CSP也可以发布在Azure config

以上是关于Wordpress 内容安全策略问题的主要内容,如果未能解决你的问题,请参考以下文章

Security ❀ CSP Bypass 内容安全策略绕过

Security ❀ CSP Bypass 内容安全策略绕过

Security ❀ CSP Bypass 内容安全策略绕过

Electron建议开发者定义定义内容安全策略

内容安全策略间歇性错误

当我有两个 CSP(内容安全策略)策略 - 标头和元时会发生啥?