「X-Content-Security-Policy」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「<!-- vim: filetype=mediawiki --> [[{{PAGENAME}}]] ( Content Security Policy, CSP ) とは、XSSデータインジェクション攻撃などの攻撃を軽...」)
 
行1: 行1:
<!--
+
[[X-Content-Security-Policy]] ( Content Security Policy, CSP ) とは、[[XSS]]や[[データインジェクション攻撃]]などの攻撃を軽減します。それらの攻撃は、データ窃盗、サイトの改竄、マルウェアへの感染に使用されます。
vim: filetype=mediawiki
+
-->
+
[[{{PAGENAME}}]] ( Content Security Policy, CSP ) とは、[[XSS]]や[[データインジェクション攻撃]]などの攻撃を軽減します。それらの攻撃は、データ窃盗、サイトの改竄、マルウェアへの感染に使用されます。
+
  
 
読み方
 
読み方
;[[{{PAGENAME}}]]: えっくす こんてんつ せきゅりてぃ ぽりしー
+
;[[X-Content-Security-Policy]]: えっくす こんてんつ せきゅりてぃ ぽりしー
 
__TOC__
 
__TOC__
  
 
== 概要 ==
 
== 概要 ==
 
 
HTML では、 script, iframe, img タグで外部サイトのコンテンツをページ内に埋め込めます。
 
HTML では、 script, iframe, img タグで外部サイトのコンテンツをページ内に埋め込めます。
 
JavaScript は、インラインスクリプトや onclick などのイベント属性でも実行できます。
 
JavaScript は、インラインスクリプトや onclick などのイベント属性でも実行できます。
  
[[{{PAGENAME}}]] ( Content Security Policy, CSP ) とは、[[XSS]]や[[データインジェクション攻撃]]などの攻撃を軽減します。それらの攻撃は、データ窃盗、サイトの改竄、マルウェアへの感染に使用されます。
+
[[X-Content-Security-Policy]] ( Content Security Policy, CSP ) とは、[[XSS]]や[[データインジェクション攻撃]]などの攻撃を軽減します。それらの攻撃は、データ窃盗、サイトの改竄、マルウェアへの感染に使用されます。
  
[[{{PAGENAME}}]] は、 meta タグで利用できません。
+
[[X-Content-Security-Policy]] は、 meta タグで利用できません。
  
 
X-Content-Security-Policy ヘッダでは、対象とするファイルの種類を指定するディレクティブと許可するドメインやプロトコル、ポートを指定するソースのペアを指定します。
 
X-Content-Security-Policy ヘッダでは、対象とするファイルの種類を指定するディレクティブと許可するドメインやプロトコル、ポートを指定するソースのペアを指定します。
行21: 行17:
  
 
== XSSの軽減 ==
 
== XSSの軽減 ==
 
 
CSP は、ホワイトリストに含まれるドメインから受信したスクリプトだけを実行します。
 
CSP は、ホワイトリストに含まれるドメインから受信したスクリプトだけを実行します。
 
つまり CSP は、[[XSS]] の軽減となります。
 
つまり CSP は、[[XSS]] の軽減となります。
  
 
== クリックジャッキングの軽減 ==
 
== クリックジャッキングの軽減 ==
 
 
CSP は、[[クリックジャッキング]] を軽減します。
 
CSP は、[[クリックジャッキング]] を軽減します。
  
行32: 行26:
  
 
== パケット盗聴攻撃の軽減 ==
 
== パケット盗聴攻撃の軽減 ==
 
 
コンテンツが読み込まれるドメインを制限し、許可するプロトコルをサーバが指定できます。
 
コンテンツが読み込まれるドメインを制限し、許可するプロトコルをサーバが指定できます。
 
すべてのコンテンツが[[HTTPS]]を使用して読み込まれるように、サーバが指定できます。
 
すべてのコンテンツが[[HTTPS]]を使用して読み込まれるように、サーバが指定できます。
  
 
== 使い方 ==
 
== 使い方 ==
 
 
=== 書式 ===
 
=== 書式 ===
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
X-Content-Security-Policy: allow ホスト...
 
X-Content-Security-Policy: allow ホスト...
行50: 行41:
 
   [; report-uri URI][; policy-uri URI]
 
   [; report-uri URI][; policy-uri URI]
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
 
=== 単純な例 ===
 
=== 単純な例 ===
 
 
default-src ディレクティブは、ほかのディレクティブで指定されなかったリソースの読み込み先のソースを指定します。
 
default-src ディレクティブは、ほかのディレクティブで指定されなかったリソースの読み込み先のソースを指定します。
 
self キーワードは、現在のページと同一ドメイン、同一ポートを表します。
 
self キーワードは、現在のページと同一ドメイン、同一ポートを表します。
行87: 行75:
  
 
=== ドメインを指定する例 ===
 
=== ドメインを指定する例 ===
 
 
同一ドメインと foo.com とそのサブドメインのコンテンツを読みこませる例です。
 
同一ドメインと foo.com とそのサブドメインのコンテンツを読みこませる例です。
  
行95: 行82:
  
 
=== タグごとに指定する例 ===
 
=== タグごとに指定する例 ===
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
X-Content-Security-Policy: default-src 'self'; img-src *;
 
X-Content-Security-Policy: default-src 'self'; img-src *;
行103: 行89:
  
 
=== JavaScript だけ制限する例 ===
 
=== JavaScript だけ制限する例 ===
 
 
JavaScript だけ同一生成元のサーバからロードし、それ以外は、どこからでも読み込ませます。
 
JavaScript だけ同一生成元のサーバからロードし、それ以外は、どこからでも読み込ませます。
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
行110: 行95:
  
 
=== HTTPSを強制する ===
 
=== HTTPSを強制する ===
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
X-Content-Security-Policy: default-src https://*:443
 
X-Content-Security-Policy: default-src https://*:443
行116: 行100:
  
 
== 関連項目 ==
 
== 関連項目 ==
 
 
* [[同一生成元ポリシー]]
 
* [[同一生成元ポリシー]]
 +
{{http}}
 +
<!-- vim: filetype=mediawiki -->

2014年2月20日 (木) 23:18時点における版

X-Content-Security-Policy ( Content Security Policy, CSP ) とは、XSSデータインジェクション攻撃などの攻撃を軽減します。それらの攻撃は、データ窃盗、サイトの改竄、マルウェアへの感染に使用されます。

読み方

X-Content-Security-Policy
えっくす こんてんつ せきゅりてぃ ぽりしー

概要

HTML では、 script, iframe, img タグで外部サイトのコンテンツをページ内に埋め込めます。 JavaScript は、インラインスクリプトや onclick などのイベント属性でも実行できます。

X-Content-Security-Policy ( Content Security Policy, CSP ) とは、XSSデータインジェクション攻撃などの攻撃を軽減します。それらの攻撃は、データ窃盗、サイトの改竄、マルウェアへの感染に使用されます。

X-Content-Security-Policy は、 meta タグで利用できません。

X-Content-Security-Policy ヘッダでは、対象とするファイルの種類を指定するディレクティブと許可するドメインやプロトコル、ポートを指定するソースのペアを指定します。 ペアは、 ; で区切って、複数指定できます。

XSSの軽減

CSP は、ホワイトリストに含まれるドメインから受信したスクリプトだけを実行します。 つまり CSP は、XSS の軽減となります。

クリックジャッキングの軽減

CSP は、クリックジャッキング を軽減します。

CSP は、どのサイトが、リソースを iframe で埋め込むか、サイトを指定できます。その結果、攻撃を防ぐことができます。

パケット盗聴攻撃の軽減

コンテンツが読み込まれるドメインを制限し、許可するプロトコルをサーバが指定できます。 すべてのコンテンツがHTTPSを使用して読み込まれるように、サーバが指定できます。

使い方

書式

X-Content-Security-Policy: allow ホスト...
   [; options {inline-script | eval-script}...]
   [; img-src ホスト...][; media-src ホスト...]
   [; srcipt-src ホスト...][; object-src ホスト...]
   [; frame-src ホスト...][; font-src ホスト...]
   [; xhr-src ホスト...][; frame-ancesors ホスト...]
   [; style-src ホスト...]
   [; report-uri URI][; policy-uri URI]

単純な例

default-src ディレクティブは、ほかのディレクティブで指定されなかったリソースの読み込み先のソースを指定します。 self キーワードは、現在のページと同一ドメイン、同一ポートを表します。

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

default-src は、当初 allow という名称でした。 Firefox 5 からは、allow と default-src が同様に扱われます。 Firefox 4 では、default-src ではなく allow ディレクティブを指定します。

互換性のためには、併記します。

X-Content-Security-Policy: default-src 'self'; allow 'self'
X-Content-Security-Policy: allow 'self'

上記の設定は、下記の動作をします。

  • インラインスクリプトの実行を禁止します。
<script>alert(0);</script>
  • script src で読み込まれる Same Origin のサーバからロードされるスクリプトだけが実行されます。
<script src="foo.js"></script>

ドメインを指定する例

同一ドメインと foo.com とそのサブドメインのコンテンツを読みこませる例です。

X-Content-Security-Policy: default-src 'self' *.foo.com

タグごとに指定する例

X-Content-Security-Policy: default-src 'self'; img-src *;
	object-src static.foo.jp;
	script-src js.foo.jp

JavaScript だけ制限する例

JavaScript だけ同一生成元のサーバからロードし、それ以外は、どこからでも読み込ませます。

X-Content-Security-Policy: default-src *; script-src 'self';

HTTPSを強制する

X-Content-Security-Policy: default-src https://*:443

関連項目