私は自分のサーバーのいくつかのCSSスタイルシートと リモートサーバーの1つのスタイルシート を含むWebサイトを持っています。
すべてのローカルスタイルシート、およびこの1つの特定のリモートスタイルシートのみを許可する方法でコンテンツセキュリティポリシーを書きたかったのです。これは私の試みでした:
style-src 'self' 'sha256-L/W5Wfqfa0sdBNIKN9cG6QA5F2qx4qICmU2VgLruv9Y='
しかし、私のウェブサイトに移動すると、Chrome 78は、リモートスタイルシートが既存のコンテンツセキュリティポリシーと一致しないと主張し、適用を拒否しました。私は この同様の質問 =、解決策は'unsafe-hashes'
を適用することでしたが、これは私の問題を解決しませんでした。外部に含まれるスクリプトとインラインスクリプトに違いがあるようです。
だから私の質問は:Chromeこのスクリプトが許可されていないと主張するのはなぜですか?そしてこのスクリプトを許可するために何が必要ですか?(ドメインの一般的なホワイトリストは別として)
From style-srcのドキュメント :
'<ハッシュ-アルゴリズム>-<base64-値>'
スクリプトまたはスタイルのsha256、sha384、またはsha512ハッシュ。 ... CSP 2.0では、これが適用されましたインラインスクリプトのみ。 CSP 3.0はそれを許可します外部スクリプトのscript-srcの場合。
したがって、これに基づいて、ハッシュ仕様は外部スタイルには使用できず、インラインスタイルにのみ使用できます。 CSP 3.0での動作変更では、この方法で外部スクリプトのみが許可され、外部スタイルは許可されません。