テーマコンポーネント:「extend content security policy」の値が無効

症状:3.4へのアップデート後、フォーラム全体で「Oops」と表示されるようになりました。さらに悪いことに、ログには何も記録されませんでした。

「extend security policy」というテーマコンポーネントがあり、その値は script-src: 'unsafe-eval' https://redacted.example.com でした。

これは、値にスペースが含まれていたため、アクションディスパッチャーで例外が発生し、フォーラム全体がクラッシュしました。

ActionDispatch::ContentSecurityPolicy::InvalidDirectiveError (無効なContent Security Policy 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-passed および stable でも利用可能です。

CSP ディレクティブの処理におけるこの動作の変更は、Rails のバックポートされたセキュリティ パッチに由来するものです。PR でさらに詳しく説明しています。:slight_smile: Discourse は、CSP を構築する前にそのような値をフィルタリングするようになります。

セーフモードに関しては、JavaScript のみを無効にするため、このデータはサーバー側で処理されるため、ここでは役に立ちませんでした。

「いいね!」 5

このトピックは、最後の返信から3日後に自動的にクローズされました。新しい返信は許可されていません。