1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Content-Security-Policyとは

Posted at

コンテンツセキュリティポリシー (CSP) は、クロスサイトスクリプティング (Cross-site_scripting) やデータインジェクション攻撃などのような、特定の種類の攻撃を検知し、影響を軽減するために追加できるセキュリティレイヤーです。これらの攻撃はデータの窃取からサイトの改ざん、マルウェアの拡散に至るまで、様々な目的に用いられます。

  • 特定の種類の攻撃を検知し、影響を軽減するために追加できるセキュリティレイヤー

CSP は完全な後方互換性を保って設計されています(ただし、 CSP 2 については後方互換性がない点もあり、明示的に記述されています。詳細はこちらの 1.1 章を参照してください)。 CSP に対応していないブラウザーは CSP を無視し、通常通り機能します。CSP が追加するようなさらなる制限はなく、標準の同一オリジンポリシーの保護のみが適用されます。

  • CSP に対応していないブラウザーは CSP を無視し、通常通り機能になる

CSP を有効にするには、ウェブサーバーから Content-Security-Policy HTTP ヘッダーを返すように設定する必要があります(X-Content-Security-Policy ヘッダーに関する記述が時々ありますが、これは古いバージョンのものであり、今日このヘッダーを指定する必要はありません)。

  • このヘッダーを指定する必要はありません
  • WEBサーバーに関連する

コンテンツ・セキュリティ・ポリシー・ヘッダーを使用すると、従業員のかわりにリクエスト可能なリソースを開発者が制御できるので、コンテンツ・インジェクションのリスクが軽減されます。

コンテンツ・セキュリティ・ポリシーとは、Webアプリケーションのクライアント側リソース用にJavaScript、CSS、イメージなどのソース・ホワイトリストを作成できる、ブラウザ側のメカニズムです。コンテンツ・セキュリティ・ポリシーは、そのようなソースからのリソースのみを実行またはレンダリングするように、特別なHTTPヘッダーを使用してブラウザに指示します。

  • ソースからのリソースのみを実行またはレンダリングするように、特別なHTTPヘッダーを使用してブラウザに指示

index.htmlに記載されているすべての外部リソースのうち、CSPに違反していないリソースのみ読み込みと実行が行われます。

上の画像の例では、img-src ‘self’と指定されているため、同一オリジンからの画像リソースのみ許可され、https://bbb.com/BBB.jpg の読み込みは拒否されます。

また、script-src nonce-xxxxと指定されているため、nonce値(※nonceの詳細は後述)が一致するccc.jsはスクリプトが実行されますが、ddd.js はnonce値がなくCSP違反となるため実行されません。
※仮にinlineでスクリプトが記載されていても、CSP違反の場合は実行はされません。

Webサーバーは、エンド・ユーザーのWebアプリケーションがスタイルシートやイメージなどをロードできるドメインのリストを把握していないため、コンテンツ・セキュリティ・ポリシーを実装するのは不可能です。Webサーバーは、アプリケーションがプラグインやメディアなどを使用するかどうかや、これらをロードできるかどうかも把握していません。

オラクル社では、コンテンツ・セキュリティ・ポリシー・ヘッダーを使用して、アプリケーション特性に基づくポリシーを定義および実装することをお薦めしています。

コンテンツ・セキュリティ・ポリシー・ルールの使用例を次に示します:

例: ルール1

Content-Security-Policy: default-src 'self'

これは制限的なルールであり、次のようなアプリケーションで機能します:
すべてのリソースが、指定したページの同じドメインでホストされます。
スクリプトおよびスタイル・リソースに対するインラインまたは評価がありません。

例: ルール2

Content-Security-Policy: default-src 'none'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self';

このポリシーの内容:
オブジェクト、フレーム、メディアなどのリソースのロードを許可しません。
同じ起点からのイメージ、スクリプト、AJAXおよびCSSを許可します。

例: ルール3

Content-Security-Policy: frame-ancestors self;

感想

説明への理解が難しい。
これは古いバージョンのものであり、今日このヘッダーを指定する必要はありませんと書いてあり必要なのか必要じゃないのかわからなかった。

どう言う分野を知っていれば理解できるのか?

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?