Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Content Security Policy の紹介

Content Security Policy (CSP) はセキュリティ対策に追加するレイヤーであり、クロスサイトスクリプティング (XSS) やデータインジェクション攻撃を含む、よく知られた種類の攻撃を検出して軽減するためのものです。これらの攻撃手法は様々な目的に用いられ、データの窃取からサイト改変、マルウェアの拡散にまで及びます。

CSP は完全な後方互換性を保って設計されています。CSP 未対応のブラウザは CSP 実装済のサーバと通信できるうえ、逆に CSP 対応のブラウザも CSP 未実装のサーバと通信が行えます。CSP 未対応のブラウザは単純に CSP を無視し、Web コンテンツに対しては通常通り 同一オリジンポリシー (same-origin policy) を適用します。CSP ヘッダを返さない Web サイトに対しても同様に、ブラウザは通常通り 同一オリジンポリシー を適用します。

CSP を Web サイトに適用するのは簡単で、Web サーバから Content-Security-Policy HTTP ヘッダを返すように設定するだけで有効にできます(Firefox 23 以前は X-Content-Security-Policy ヘッダを使用していました)。CSP を設定し有効にする方法については Content Security Policy の利用方法 で詳しく説明します。

注記: Content Security Policy の 標準仕様 では、<meta> 要素を用いても CSP ポリシーを設定できると定めていますが、Firefox では未サポートです。本機能のサポート追加は bug 663570 で行っています。

クロスサイトスクリプティングの軽減

CSP の最初のゴールは、XSS 攻撃を軽減し、それを報告することです。XSS 攻撃は、ブラウザがサーバから受信したコンテンツを信頼することにつけこみます。コンテンツが表示されているサイトとは別の場所からのものであっても、ブラウザはコンテンツが表示されているサイトを信頼するため、悪意のあるスクリプトが被害者のブラウザによって実行されてしまいます。

CSP は、実行可能なスクリプトの提供元が検証されていることをブラウザが判別するためのドメインを指定することによって、サーバ管理者が XSS の要因を減らし根絶できるようにします。CSP 互換のブラウザは、ホワイトリストに含まれたドメインから受信したスクリプトだけを実行し、その他のスクリプト (インラインスクリプトやイベントを扱う HTML 属性を含む) をすべて無視します。

究極的な防護方法として、スクリプトの実行を許可しないサイトでは、スクリプトの実行をグローバルに禁止することができます。

パケット盗聴攻撃の軽減

コンテンツが読み込まれるドメインを制限することに加えて、使用できるプロトコルをサーバから指定できます。例えば(理想的なセキュリティ対策として)、すべてのコンテンツが HTTPS で読み込まれるようにサーバから指定できます。

補足: 安全なデータ通信を完全なものにするには、通信プロトコルに HTTPS を強制するだけでなく、すべての Cookie に secure フラグをセットしたり、HTTP ページから対応する HTTPS ページへの自動リダイレクトも検討する必要があります。
補足: ブラウザによる Web サイトへのアクセスを暗号化された通信路のみに限定させるには、Strict-Transport-Security HTTP ヘッダを使用することもできます。

関連情報

仕様

ドキュメントのタグと貢献者

 このページの貢献者: hashedhyphen, hamasaki, yyss, Marsf
 最終更新者: hashedhyphen,