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

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

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

Header type Response header
Forbidden header name no

構文

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

ディレクティブ

Fetch ディレクティブ

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

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

Instead of child-src, authors who wish to regulate nested browsing contexts and workers should use the frame-src and worker-src directives, respectively.

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
Worker、 SharedWorker または 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> によってページに埋め込まれた有効な親を指定します。
navigation-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 草案 Adds disown-opener, manifest-src, navigation-to, report-to, strict-dynamic, worker-src. Undeprecates frame-src. Deprecates report-uri in favor if report-to.
Mixed Content 勧告候補 Adds block-all-mixed-content.
Subresource Integrity 勧告 Adds require-sri-for.
Upgrade Insecure Requests 勧告候補 Adds upgrade-insecure-requests.
Content Security Policy Level 2 勧告 Adds base-uri, child-src, form-action, frame-ancestors, plugin-types, referrer, and report-uri. Deprecates frame-src.
Content Security Policy 1.0 廃止された Defines connect-src, default-src, font-src, frame-src, img-src, media-src, object-src, report-uri, sandbox, script-src, and 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.

関連情報

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

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