Drupalコンテンツセキュリティポリシー(CSP)


CSP(コンテンツセキュリティポリシー)は、クロスサイトスクリプティング(XSS)やデータインジェクション攻撃などの特定の脅威の検出と緩和を支援する追加のセキュリティレイヤーです。これらの攻撃の目的は、データの盗難、サイトの改竄、マルウェアの配布などです。

Content Security Policyの構成プロセスは、Webページに「Content-Security-Policy HTTP header」を追加し、そのページに対しユーザーエージェントが許可されたリソースを制限する設定を反映させるものです。たとえば、写真をアップロードし表示させるページでは、どこからでも画像を受け入れ可能ですが、フォームアクションを単一のエンドポイントに制限することができます。適切に設計されたContent Security Policyは、クロスサイトスクリプティングからページを保護するのに役立ちます。この記事では、ヘッダーを正しく記述する方法を例を交えご説明します。

他のリソースタイプに独自のルールがない場合のフォールバックとして、「default-src policy directive」をポリシーに含める必要があります。インラインスクリプトの実行を禁止するには、ポリシーに「default-src」または「script-src directive」を含める必要があり、eval()の使用も同様です。一方で、style要素またはstyle属性からインラインスタイルが適用されないようにするには、ポリシーに「default-src」または「style-src directive」を含める必要があります。

DrupalサイトでCSPを有効にするには、Webサーバーを構成し「Content-Security-Policy HTTP header」を返す必要があります。有効化と構成には、「Content security policy module」をダウンロードするか、次のようにcomposerを使用します。$ composer require 'drupal/csp:1.16'。
「Drupal module」をインストールした後、モジュールページで「CSP module」を有効にします。

ウェブサイトに影響を与えずにContent Security Policyを構成する最も安全な方法は、「Report-only」を有効にすることです。これにより、Webブラウザを介してポリシーが有効になった場合にロードされない要素がどれかを確認できます。また、自動生成されたレポートでも同様に確認できます。

Report Only

問題が修正されたら、Content Security Policyモジュール設定の「Enforced」タブをクリックします。

Enforced

Content-Security-PolicyがHTTP headerに正常に追加されたかどうかを確認するには「network」タブに移動してレスポンスヘッダを確認します。

Network

データ転送にはコマンドラインまたはスクリプト「CURL」を使用できます。ターミナルに次のコマンドを入力します。

curl –head <site url>

脅威

[クロスサイトスクリプティングの緩和]

XSS攻撃を防止し、報告することがCSPの主な目的です。XSS攻撃は、ブラウザがサーバーから受信したコンテンツに対する信頼を利用しています。悪意のあるスクリプトは、コンテンツのソースが見かけ上の場所から来ていなくても、ブラウザがソースを信頼するため、被害者のブラウザで実行されてしまいます。

[パケットスニッフィング攻撃の緩和]

サーバーは使用可能なプロトコルを示すことができます。たとえば、サーバーはすべてのコンテンツがHTTPSを介して読み込まれるように指定できます(セキュリティの観点で望ましい)。包括的なデータ転送セキュリティプランは、データ転送にHTTPSを要求するだけでなく、すべてのクッキーにsecure属性を追加し、HTTPからHTTPS URLへの自動リダイレクトも提供します。サイトは「Strict-Transport-Security HTTP header」を使用して、ブラウザを暗号化されたチャネルを介して接続するように強制することも可能です。

 

参照:

https://www.inmotionhosting.com/support/edu/drupal/content-security-policy-csp-drupal-8/

https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP

Profile picture for user Jhon Manny Loto
Jhon Manny Loto Software Developer

僕はフィリピンのド田舎で育ちました!だから僕の夢は世界中を旅することです。苦しい時期が続こうとも、信仰と勇気が僕を前進させる大きなモチベーションとなっています。どんなに辛くても、立ち上がり行動することを諦めないのがモットーです。良いことはこれからやってきます。Acret-PHの一員になることは、僕にとって知識とスキルを育てる大きなチャンスです。入社時はDrupalの知識が全くなかったですが、先輩や仲間の助けを得て、学ぶことができました。

株式会社アクレットは、15年以上のDrupal開発実績を持っています。
プロジェクトの要件定義、システム設計から、Drupalサイト構築、運用サポートまで、Drupalに関するあらゆるサービスを提供いたします。

お問い合わせ