CSPの問題を修正する方法

こんにちは!CSPで問題が発生しています。これを修正するにはどうすればよいですか?

screen

インラインスクリプトの実行は拒否されました。これは、次のコンテンツセキュリティポリシーディレクティブに違反しているためです: "script-src https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/ https://mydomain.com"。インライン実行を有効にするには、'unsafe-inline' キーワード、ハッシュ ('sha256-ScCk7JwXKy22dTO0VFM7aV1chV+yd/MUda4X6VnGans=')、または nonce ('nonce-...') のいずれかが必要です。

テストのために、セーフモードに入りましたが、セーフモードでも同じ問題が発生しています。

「いいね!」 1

私の得意分野ではありませんが、検索したところ、インラインスクリプトを書き直す必要があるかもしれません。

「いいね!」 2

CSP保護を無効にしたくなく、外部スクリプトもありません。すべてのプラグインとトピックのコンポーネントを無効にしてみましたが、効果はありませんでした。

管理設定の content security policy script src にこれらのリンクをすべて追加しようとしましたが、問題は解決しました :frowning:

https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/ https://mydomain.com`

「いいね!」 1

サイトのURLを共有していただけないと、お手伝いできません。

「いいね!」 3

あなたのプライベートメッセージに送ってもいいですか?

うーん…

原因がわかりました。問題は、テーマでCSPメタタグを使用していることのようです。

<meta http-equiv="Content-Security-Policy" content="img-src https://imgur.com https://giphy.com">

禁止されているホストからの画像の表示を制限するには、img-srcディレクティブを使用する必要があります。

そのCSPディレクティブはDiscourseを完全に壊しますね。

「いいね!」 2

ヘッダーのデフォルトCSPディレクティブをメタタグを使用せずにimg-srcを追加するように変更するにはどうすればよいですか?Railsで試しましたが、何も変更されません。

Rails.application.config.action_dispatch.default_headers.merge!({'Content-Security-Policy' => "upgrade-insecure-requests; base-uri 'self'; object-src 'none'; script-src https://mydomain.com/logs/ https://mydomain.com/sidekiq/ https://mydomain.com/mini-profiler-resources/ https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/extra-locales/ https://mydomain.com/highlight-js/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/ https://mydomain.com/theme-javascripts/ https://mydomain.com/svg-sprite/; worker-src 'self' https://mydomain.com/assets/ https://mydomain.com/brotli_asset/ https://mydomain.com/javascripts/ https://mydomain.com/plugins/; frame-ancestors 'self'; manifest-src 'self'; img-src data: https://mydomain.com https://imgur.com"})

このメタタグを削除し、再構築したところ、問題は解決しました:frowning: