web-dev-qa-db-ja.com

Content-Security-Policyには何を設定すればよいですか?

Drupal 8を使用していますが、現在使用しています

Header always set Content-Security-Policy "default-src 'self'; nosniff"

ただし、これにより、Google Analyticsが機能しなかったり、テキストボックスが編集ページから不思議な形で消えたりするなどのバグが発生します。私は何をすべきか?

5
user75247

ポリシーには、アセットが読み込まれるすべてのドメインを含める必要があります。これは、CDNやサードパーティのJavaScriptウィジェットなど、サイトが使用するサービスによって異なります。

Googleアナリティクスの場合、www.google-analytics.comに接続できる必要があります。また、ディスプレイ機能のトラッキングが有効になっている場合はstats.g.doubleclick.netに接続できる必要があります。
Google Analytics モジュールには、分析を挿入するため、unsafe-inlineポリシー値も必要ですページの直接スニペット。
Googalytics は、Drupal 8専用に構築された代替手段ですunsafe-inlineなし。

Coreは現在、CKEditor 4を使用しているため、要素属性のスクリプトに「unsafe-inline」が必要です( https://www.drupal.org/project/drupal/issues/2789139 を参照)


サイトの機能に影響を与えずにコンテンツセキュリティポリシーをテストするには、最初にContent-Security-Policy-Report-Onlyヘッダーを使用してください。これにより、ブラウザは、ページのコンテンツをブロックすることなく、ブラウザコンソールおよびreport-uriアドレスへのポリシー違反を報告します。違反なしで機能するポリシーを作成したら、ヘッダーをContent-Security-Policyに変更します。

両方のヘッダーを同時に提供することもでき、機能を損なうリスクなしに変更をテストできます。

Report-uri.io は、強制ルールとレポート専用ルールの両方の違反を収集し、必要な変更を監査するために使用できる無料のロギングサービスを提供します。
また、初めてポリシーを設定するのに役立つウィザードユーティリティがあります。


Drupal 8でポリシーを設定することも コンテンツセキュリティポリシーモジュール で簡単です。これはDrupal 8のライブラリシステムと統合してスクリプトとスタイルのソースを自動的に追加し、設定を検証する管理UIを提供し、レポート違反のローカルハンドラーを提供し、可能な場合はいくつかの最適化を適用してポリシーを短縮します。

3
gapple