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

**URL:** https://meta.discourse.org/t/theme-component-invalid-extend-content-security-policy-value/350861
**Category:** Bug
**Created:** [2025年二月6日 12:26 UTC](https://meta.discourse.org/t/theme-component-invalid-extend-content-security-policy-value/350861 "2025-02-06T12:26:27Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [2025年二月6日 12:26 UTC](https://meta.discourse.org/t/theme-component-invalid-extend-content-security-policy-value/350861/1 "2025-02-06T12:26:27Z")

</div>

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

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

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

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

```

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

---

<div class="post-metadata">

### Author: ![kelv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kelv/32/524739_2.png) [@kelv](https://meta.discourse.org/u/kelv)
#### Post date: [2025年二月7日 12:42 UTC](https://meta.discourse.org/t/theme-component-invalid-extend-content-security-policy-value/350861/4 "2025-02-07T12:42:28Z")

</div>

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

---

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [2025年二月7日 15:46 UTC](https://meta.discourse.org/t/theme-component-invalid-extend-content-security-policy-value/350861/5 "2025-02-07T15:46:20Z")

</div>

这是在 3.3.3 上。

---

<div class="post-metadata">

### Author: ![kelv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kelv/32/524739_2.png) [@kelv](https://meta.discourse.org/u/kelv)
#### Post date: [2025年二月11日 04:09 UTC](https://meta.discourse.org/t/theme-component-invalid-extend-content-security-policy-value/350861/6 "2025-02-11T04:09:16Z")

</div>

嘿 @michaeld，我已将 [FIX: invalid CSP directive sources should allow site to boot with valid CSP directives by tyb-talks · Pull Request #31256 · discourse/discourse · GitHub](https://github.com/discourse/discourse/pull/31256) 的修复合并到最新的 `main` 分支。现在该修复也已在 `tests-passed` 和 `stable` 分支中可用。

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

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

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [2025年二月14日 08:07 UTC](https://meta.discourse.org/t/theme-component-invalid-extend-content-security-policy-value/350861/8 "2025-02-14T08:07:07Z")

</div>

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