この記事は翻訳作業中です。

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
スタイルシートに対して有効なソースを指定します。
webrtc-src
WebRTC コネクションのための有効なソースを指定します。
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> によってページに埋め込まれた有効な親を指定します。
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.example.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 を定義。

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応Chrome 完全対応 25
補足
完全対応 25
補足
補足 Implemented as X-Webkit-CSP header in Chrome 14.
Edge 完全対応 14Firefox 完全対応 23
補足
完全対応 23
補足
補足 Implemented as X-Content-Security-Policy header in Firefox 4.
IE 完全対応 10
補足
完全対応 10
補足
補足 Implemented as X-Content-Security-Policy header, only supporting 'sandbox' directive.
Opera 完全対応 15Safari 完全対応 7
補足
完全対応 7
補足
補足 Implemented as X-Webkit-CSP header in Safari 6.
WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1
補足
完全対応 7.1
補足
補足 Implemented as X-Webkit-CSP header in iOS 5.1.
Samsung Internet Android 完全対応 あり
<meta> element supportChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 45IE 未対応 なしOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 45Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり
Worker supportChrome 完全対応 ありEdge ? Firefox 完全対応 50IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile ? Firefox Android 完全対応 50Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実装ノートを参照してください。
実装ノートを参照してください。

関連情報

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

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