升级后 content security policy script src for GTM

我们于 2021-04-08 更新了 Discourse。

随后我们注意到 content_security_policy 可能存在一些问题。

GTM 用于 content security policy 的 script src

按 F12 打开控制台:

此问题发生在 Discourse 更新至最新版本后。

1 个赞

您能向我们展示实际发送的完整 CSP 头部吗?

1 个赞

@supermathie

非常感谢您的快速回复。

我尝试从 Firefox 加载头部信息,不确定是否操作正确。

请查看屏幕截图附件。

已切换至 Chrome。

在这里,您或许可以看到更详细的请求信息。

自从原始帖子发布以来情况一定有所变化,因为现在它的表现已符合预期:

○ → curl -I https://www.ossez.com
HTTP/2 200 
…
content-security-policy: base-uri 'none'; object-src 'none'; script-src https://www.ossez.com/logs/ https://www.ossez.com/sidekiq/ https://www.ossez.com/mini-profiler-resources/ https://www.ossez.com/assets/ https://www.ossez.com/brotli_asset/ https://www.ossez.com/extra-locales/ https://www.ossez.com/highlight-js/ https://www.ossez.com/javascripts/ https://www.ossez.com/plugins/ https://www.ossez.com/theme-javascripts/ https://www.ossez.com/svg-sprite/ https://www.googletagmanager.com/gtm.js 'nonce-38d2a45e5e933b869e14465772b2c0de' https: https://tagmanager.google.com https://www.googletagmanager.com 'unsafe-inline' https://analytics.ossez.com/matomo.js https://www.ossez.com/cdn-cgi/apps/head/qk5vBDFy7qBIoPy3q8a6LUoKei8.js https://www.googletagmanager.com/gtm.js; worker-src 'self' https://www.ossez.com/assets/ https://www.ossez.com/brotli_asset/ https://www.ossez.com/javascripts/ https://www.ossez.com/plugins/

'unsafe-inline' 现在已被正确加引号,但 Chrome 忽略了它:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:[…] 请注意,如果源列表中存在哈希值或 nonce 值,则 'unsafe-inline' 将被忽略。

Firefox 也是如此:

内容安全策略:在 script-src 或 style-src 中忽略“‘unsafe-inline’”:已指定 nonce 源或哈希源

这是因为您在 CSP 列表中指定了 nonce 值:'nonce-38d2a45e5e933b869e14465772b2c0de'

我看到您使用了 Cloudflare;请注意,您必须禁用 各种 Cloudflare 功能,因为默认情况下它们会破坏 Discourse 的正常运行。

4 个赞

非常感谢。

1 个赞