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

提供: セキュリティ
移動: 案内検索
行73: 行73:
 
<script src="foo.js"></script>
 
<script src="foo.js"></script>
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== ドメインを指定する例 ===
 
=== ドメインを指定する例 ===
 
同一ドメインと foo.com とそのサブドメインのコンテンツを読みこませる例です。
 
同一ドメインと foo.com とそのサブドメインのコンテンツを読みこませる例です。
行80: 行79:
 
X-Content-Security-Policy: default-src 'self' *.foo.com
 
X-Content-Security-Policy: default-src 'self' *.foo.com
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== タグごとに指定する例 ===
 
=== タグごとに指定する例 ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
行87: 行85:
 
script-src js.foo.jp
 
script-src js.foo.jp
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== JavaScript だけ制限する例 ===
 
=== JavaScript だけ制限する例 ===
 
JavaScript だけ同一生成元のサーバからロードし、それ以外は、どこからでも読み込ませます。
 
JavaScript だけ同一生成元のサーバからロードし、それ以外は、どこからでも読み込ませます。
行93: 行90:
 
X-Content-Security-Policy: default-src *; script-src 'self';
 
X-Content-Security-Policy: default-src *; script-src 'self';
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
=== HTTPSを強制する ===
 
=== HTTPSを強制する ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
X-Content-Security-Policy: default-src https://*:443
 
X-Content-Security-Policy: default-src https://*:443
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
== 関連項目 ==
 
== 関連項目 ==
 +
* [[Content-Security-Policy]]
 
* [[同一生成元ポリシー]]
 
* [[同一生成元ポリシー]]
 
{{http}}
 
{{http}}
 
<!-- vim: filetype=mediawiki -->
 
<!-- vim: filetype=mediawiki -->

2015年4月29日 (水) 00:38時点における版

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

関連項目