主题组件无效的“扩展内容安全策略”值

症状:更新到 3.4 后,整个论坛都显示“Oops”。更糟糕的是,日志对此保持完全沉默。

有一个主题组件,其“扩展安全策略”值为 script-src: 'unsafe-eval' https://redacted.example.com

这导致了整个论坛崩溃,因为动作调度器中抛出了一个异常,因为值中存在空格。

ActionDispatch::ContentSecurityPolicy::InvalidDirectiveError (无效的内容安全策略 script-src: \"'unsafe-eval' https://redacted.example.com\"。指令值不得包含空格
或分号。请改用多个参数或其他指令方法。)

哦,我忘了最重要的事情。安全模式不起作用!!

5 个赞

我会进一步调查此事并回复您。在升级到 3.4 之前,您的论坛的 Discourse 版本是多少?

1 个赞

这是在 3.3.3 上。

@michaeld,我已将 FIX: invalid CSP directive sources should allow site to boot with valid CSP directives by tyb-talks · Pull Request #31256 · discourse/discourse · GitHub 的修复合并到最新的 main 分支。现在该修复也已在 tests-passedstable 分支中可用。

此 CSP 指令处理行为的更改源于 Rails 中一个回传的安全补丁——我在 PR 中对此进行了更详细的说明。:slight_smile: Discourse 现在将在构建 CSP 之前过滤掉这些值。

关于安全模式,由于它只禁用 JavaScript 部分,因此在这里无济于事,因为这些数据是在服务器端处理的。

5 个赞

此主题在上次回复后 3 天自动关闭。不允许新的回复。