この翻訳は不完全です。英語から この記事を翻訳 してください。

HTTP の Content-Security-Policy 応答ヘッダーは、ウェブサイト管理者が、あるページにユーザーエージェントが読み込みを許可されたリソースを管理できるようにします。いくつかの例外を除いて、大半のポリシーにはサーバーオリジンとスクリプトエンドポイントの指定を含んでいます。これはクロスサイトスクリプティングアタック (XSS)を防ぐのに役立ちます。

より詳細な情報は、Content Security Policy (CSP) の記事を見てください。

ヘッダー種別 応答ヘッダー
禁止ヘッダー名 いいえ

構文

Content-Security-Policy: <policy-directive>; <policy-directive>

ディレクティブ

Fetch ディレクティブ

Fetch ディレクティブは特定のリソースタイプがロードされうる場所を制御します。

child-src
Web Workers と、<frame><iframe> のような要素によってロードされる入れ子状のコンテンツの閲覧に対して有効なソース定義します。

複合した閲覧コンテキストやワーカーを制御するには、 それぞれ frame-src 及び worker-srcchild-src の代わりに使用してください。

connect-src
script インターフェースによってロードされる URL を制限します。
default-src
別の fetch directives に対する代替として提供します。
font-src
@font-face によってロードされるフォントに対して有効なソースを指定します。
frame-src
<frame><iframe> のような要素によってロードされる入れ子状のコンテンツの閲覧に対して有効なソースを指定します。
img-src
画像や favicon に対して有効なソースを定義します。
manifest-src
アプリケーションのマニフェストファイルに対して有効なソースを指定します。
media-src
<audio><video><track> 要素によってロードするメディアに対して有効なソースを指定します。
object-src
<object><embed><applet> 要素に対して有効なソースを指定します。

prefetch-src

事前にフェッチされるか描画される有効なソースを指定します。

script-src
JavaScript に対して有効なソースを指定します。
style-src
スタイルシートに対して有効なソースを指定します。
worker-src
WorkerSharedWorker または ServiceWorker スクリプトに対して有効なソースを指定します.

ドキュメントディレクティブ

ドキュメントディレクティブは、ポリシーが適用されるドキュメントもしくは worker 環境のプロパティを管理します。

base-uri
ドキュメントの <base> 要素で使用される URL を制限します。
plugin-types
ロードされるリソースのタイプを限定することで、ドキュメントに埋め込まれるプラグインの組を制限します。
sandbox
<iframe>sandbox 属性に類似した要求リソースに対してサンドボックスを有効にします。
disown-opener
移動する場合に、リソースが移動元をする disown するかを明確にします。

Navigation ディレクティブは、例えばユーザーが移動する場所やフォームを送信する場所を管理します。

form-action
指定のコンテキストからフォームの送信先として使用される URL を制限します。
frame-ancestors
<frame>, <iframe>, <object>, <embed>, もしくは <applet> によってページに埋め込まれた有効な親を指定します。
navigate-to
(form, window.location, window.open など) あらゆる手段でドキュメントが移動する URL を制限します。

Reporting ディレクティブ

Reporting directives control the reporting process of CSP violations. See also the Content-Security-Policy-Report-Only header.

report-uri
Instructs the user agent to report attempts to violate the Content Security Policy. These violation reports consist of JSON documents sent via an HTTP POST request to the specified URI.

Though the report-to directive is intended to replace the deprecated report-uri directive, report-to isn’t supported in most browsers yet. So for compatibility with current browsers while also adding forward compatibility when browsers get report-to support, you can specify both report-uri and report-to:

Content-Security-Policy: ...; report-uri https://endpoint.com; report-to groupname

In browsers that support report-to, the report-uri directive will be ignored.

report-to
Fires a SecurityPolicyViolationEvent.

その他のディレクティブ

block-all-mixed-content
Prevents loading any assets using HTTP when the page is loaded using HTTPS.
referrer
Used to specify information in the referer (sic) header for links away from a page. Use the Referrer-Policy header instead.
require-sri-for
Requires the use of SRI for scripts or styles on the page.
upgrade-insecure-requests
Instructs user agents to treat all of a site's insecure URLs (those served over HTTP) as though they have been replaced with secure URLs (those served over HTTPS). This directive is intended for web sites with large numbers of insecure legacy URLs that need to be rewritten.

worker 内のCSP

Workers は、一般的にドキュメント (もしくは親 Worker) の Content Security Policy によって管理されません。Worker に対する Content Security Policy を指定するには、Worker スクリプト自身が要求したリクエストに対して Content-Security-Policy 応答ヘッダーを設定して下さい。

Worker スクリプトのオリジンがグローバルで一意の識別子の場合、(例えば、URL がデータやブロブのスキーマの場合)、例外に当たります。この場合、Worker はドキュメントもしくは作成元の Worker の Content Security Policy を継承します。

複数のCSP

CSP では、Content-Security-Policy ヘッダー、Content-Security-Policy-Report-Only ヘッダーや <meta> 要素を経由したものを含む、リソースに対して複数のポリシーを指定することができます。

You can use the Content-Security-Policy header more than once like in the example below. Pay special attention to the connect-src directive here. Even though the second policy would allow the connection, the first policy contains connect-src 'none'. Adding additional policies can only further restrict the capabilities of the protected resource, which means that there will be no connection allowed and, as the strictest policy, connect-src 'none' is enforced.

Content-Security-Policy: default-src 'self' http://example.com;
                         connect-src 'none';
Content-Security-Policy: connect-src http://example.com/;
                         script-src http://example.com/

例: 安全でない inline/eval を無効にし、https 経由でのリソース (画像、フォント、スクリプトなど) のロードを許します。

// ヘッダー
Content-Security-Policy: default-src https:

// メタタグ
<meta http-equiv="Content-Security-Policy" content="default-src https:">

例: 修正のためにインラインコードを多用している既存のサイトで、https 経由でのみロードされるリソースを明確にし、プラグインを無効にします。

Content-Security-Policy: default-src https: 'unsafe-eval' 'unsafe-inline'; object-src 'none'

例: 上記のポリシーを実装せず、代わりに、発生するであろう違反を報告します。

Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/

その他の例は、Mozilla Web Security Guidelines を参照して下さい。

仕様書

仕様書 状態 備考
Content Security Policy Level 3 草案 disown-opener, manifest-src, navigate-to, report-to, strict-dynamic, worker-src を追加。 frame-src の非推奨を解除。 report-urireport-to の代わりに非推奨化。
Mixed Content 勧告候補 block-all-mixed-content を追加。
Subresource Integrity 勧告 require-sri-for を追加。
Upgrade Insecure Requests 勧告候補 upgrade-insecure-requests を追加。
Content Security Policy Level 2 勧告 base-uri, child-src, form-action, frame-ancestors, plugin-types, referrer, report-uri を追加。 frame-src を非推奨化。
Content Security Policy 1.0 廃止された connect-src, default-src, font-src, frame-src, img-src, media-src, object-src, report-uri, sandbox, script-src,, style-src を定義。

ブラウザーの対応

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応251142321031574
<meta> element support あり あり45 なし あり あり
Worker support あり ?50 なし ? なし
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり23 ?7.15 あり
<meta> element support あり あり あり45 あり あり あり
Worker support あり あり ?50 ? なし あり

1. Implemented as X-Webkit-CSP header in Chrome 14.

2. Implemented as X-Content-Security-Policy header in Firefox 4.

3. Implemented as X-Content-Security-Policy header, only supporting 'sandbox' directive.

4. Implemented as X-Webkit-CSP header in Safari 6.

5. Implemented as X-Webkit-CSP header in iOS 5.1.

関連情報

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

このページの貢献者: mfuji09, toVersus, Uemmra3, Malvoz
最終更新者: mfuji09,