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

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

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

ヘッダー種別 レスポンスヘッダー
禁止ヘッダー名 いいえ

構文

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

ディレクティブ

フェッチディレクティブ

フェッチディレクティブは、特定のリソース種別がロードされうる場所を制御します。

child-src
ウェブワーカーと、 <frame><iframe> のような要素によってロードされる入れ子状の閲覧コンテキストに対して有効なソースを定義します。

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

connect-src
script インターフェースによってロードされる URL を制限します。
default-src
別の Fetch ディレクティブに対する代替として提供します。
font-src
@font-face によってロードされるフォントに対して有効なソースを指定します。
frame-src
<frame><iframe> のような要素によってロードされる入れ子状のコンテンツの閲覧に対して有効なソースを指定します。
img-src
画像や favicon に対して有効なソースを定義します。
manifest-src
アプリケーションのマニフェストファイルに対して有効なソースを指定します。
media-src
<audio><video><track> 要素によってロードするメディアに対して有効なソースを指定します。
object-src
<object><embed><applet> 要素に対して有効なソースを指定します。
object-src で制御される要素は、おそらく古い HTML 要素に該当すると見なされ、新しい標準機能が利用できません (セキュリティ属性の sandbox<iframe>allow など)。従って、このフェッチディレクティブで制限を掛けることが推奨されます (例えば、可能であれば object-src 'none' を設定するなど)。
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 するかを明確にします。

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

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

報告ディレクティブ

報告ディレクティブは CSP 違反の報告過程を制御します。 Content-Security-Policy-Report-Only ヘッダーも参照してください。

report-uri
ユーザーエージェントにコンテンツセキュリティポリシーの違反を報告するよう指示します。これらの違反の報告は、 JSON 文書を HTTP の POST リクエストで指定された URI に送信することで行われます。

report-to ディレクティブは非推奨の report-uri ディレクティブを置き換えることを意図していますが、 report-to はまだ多くのブラウザーで対応されていません。そのため、ブラウザーで report-to の対応が行われるまでは現在のブラウザーとの互換性のため、 report-uri および report-to の両方を指定することができます。

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

report-to に対応したブラウザーでは、 report-uri ディレクティブは無視されます。

report-to
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.
trusted-types
Used to specify a whitelist of Trusted Types policies (Trusted Types allows applications to lock down DOM XSS injection sinks to only accept non-spoofable, typed values in place of strings).
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.

廃止されたディレクティブ

require-sri-for
Requires the use of SRI for scripts or styles on the page.

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 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
Content-Security-PolicyChrome 完全対応 25
完全対応 25
完全対応 14
代替名
代替名 非標準の名前 X-Webkit-CSP を使用しています。
Edge 完全対応 14Firefox 完全対応 23
完全対応 23
完全対応 4
代替名
代替名 非標準の名前 X-Content-Security-Policy を使用しています。
IE 完全対応 10
補足 代替名
完全対応 10
補足 代替名
補足 Only supporting 'sandbox' directive.
代替名 非標準の名前 X-Content-Security-Policy を使用しています。
Opera 完全対応 15Safari 完全対応 7
完全対応 7
完全対応 6
代替名
代替名 非標準の名前 X-Webkit-CSP を使用しています。
WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android 完全対応 ありSafari iOS 完全対応 7.1
完全対応 7.1
完全対応 5.1
補足
補足 X-Webkit-CSP
Samsung Internet Android 完全対応 あり
base-uriChrome 完全対応 40Edge 未対応 なしFirefox 完全対応 35IE 未対応 なしOpera 完全対応 27Safari 完全対応 10WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 35Opera Android ? Safari iOS 完全対応 9.3Samsung Internet Android 完全対応 あり
block-all-mixed-contentChrome 完全対応 ありEdge ? Firefox 完全対応 48IE 未対応 なしOpera 完全対応 ありSafari ? WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 48Opera Android ? Safari iOS ? Samsung Internet Android 完全対応 あり
child-srcChrome 完全対応 40Edge 完全対応 15Firefox 完全対応 45IE 未対応 なしOpera 完全対応 27Safari 完全対応 10WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 45Opera Android ? Safari iOS 完全対応 9.3Samsung Internet Android 完全対応 あり
connect-srcChrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23
補足
完全対応 23
補足
補足 Prior to Firefox 50, ping attributes of <a> elements weren't covered by connect-src.
IE 未対応 なしOpera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
default-srcChrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23IE 未対応 なしOpera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
font-srcChrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23IE 未対応 なしOpera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
form-actionChrome 完全対応 40Edge 完全対応 15Firefox 完全対応 36IE 未対応 なしOpera 完全対応 27Safari 完全対応 10WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 36Opera Android ? Safari iOS 完全対応 9.3Samsung Internet Android 完全対応 あり
frame-ancestorsChrome 完全対応 40Edge 完全対応 15Firefox 完全対応 33
補足
完全対応 33
補足
補足 Before Firefox 58, frame-ancestors is ignored in Content-Security-Policy-Report-Only.
IE 未対応 なしOpera 完全対応 26Safari 完全対応 10WebView Android ? Chrome Android 完全対応 ありFirefox Android 完全対応 33
補足
完全対応 33
補足
補足 Before Firefox for Android 58, frame-ancestors is ignored in Content-Security-Policy-Report-Only.
Opera Android ? Safari iOS 完全対応 9.3Samsung Internet Android 完全対応 あり
frame-srcChrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23IE 未対応 なしOpera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
img-srcChrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23IE 未対応 なしOpera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
manifest-srcChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 41IE 未対応 なしOpera 完全対応 ありSafari 未対応 なしWebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 41Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 あり
media-srcChrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23IE 未対応 なしOpera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
<meta> element supportChrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 45IE 未対応 なしOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 45Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり
navigate-to
実験的
Chrome 未対応 なしEdge 未対応 なしFirefox 未対応 なしIE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android 未対応 なしFirefox Android 未対応 なしOpera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なし
object-srcChrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23IE 未対応 なしOpera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
plugin-typesChrome 完全対応 40Edge 完全対応 15Firefox 未対応 なし
補足
未対応 なし
補足
補足 See bug 1045899.
IE 未対応 なしOpera 完全対応 27Safari 完全対応 10WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 未対応 なしOpera Android ? Safari iOS 完全対応 9.3Samsung Internet Android 完全対応 あり
prefetch-src
実験的
Chrome 未対応 なし
補足
未対応 なし
補足
補足 See bug 801561.
Edge 未対応 なしFirefox 未対応 なし
補足
未対応 なし
補足
補足 See bug 1457204.
IE 未対応 なしOpera 未対応 なしSafari 未対応 なし
補足
未対応 なし
補足
補足 See bug 185070.
WebView Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 801561.
Chrome Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 801561.
Firefox Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 1457204.
Opera Android 未対応 なしSafari iOS 未対応 なし
補足
未対応 なし
補足
補足 See bug 185070.
Samsung Internet Android 未対応 なし
referrer
非推奨非標準
Chrome 未対応 33 — 56Edge 未対応 なしFirefox 未対応 37 — 62IE 未対応 なしOpera 未対応 ? — 43Safari 未対応 なしWebView Android 未対応 4.4.3 — 56Chrome Android 未対応 33 — 56Firefox Android 未対応 37 — 62Opera Android 未対応 ? — 43Safari iOS 未対応 なしSamsung Internet Android 完全対応 あり
report-sample
実験的
Chrome 完全対応 59Edge ? Firefox ? IE ? Opera 完全対応 46Safari ? WebView Android 完全対応 59Chrome Android 完全対応 59Firefox Android ? Opera Android 完全対応 43Safari iOS ? Samsung Internet Android 完全対応 7.0
report-toChrome 完全対応 70Edge 未対応 なしFirefox 未対応 なしIE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 完全対応 70Chrome Android 完全対応 70Firefox Android 未対応 なしOpera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なし
report-uri
非推奨
Chrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23IE 未対応 なしOpera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
require-sri-for
実験的
Chrome 完全対応 54Edge 未対応 なしFirefox 未対応 49 — 68
無効
未対応 49 — 68
無効
無効 From version 49 until version 68 (exclusive): this feature is behind the security.csp.experimentalEnabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 41Safari 未対応 なしWebView Android 完全対応 54Chrome Android 完全対応 54Firefox Android 未対応 49 — 68
無効
未対応 49 — 68
無効
無効 From version 49 until version 68 (exclusive): this feature is behind the security.csp.experimentalEnabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android 完全対応 41Safari iOS 未対応 なしSamsung Internet Android 完全対応 6.0
sandboxChrome 完全対応 25Edge 完全対応 14Firefox 完全対応 50IE 完全対応 10Opera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 50Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
script-srcChrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23IE 未対応 なしOpera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
script-src-attr
実験的
Chrome 完全対応 75Edge 未対応 なしFirefox 未対応 なし
補足
未対応 なし
補足
補足 See bug 1529337.
IE 未対応 なしOpera 完全対応 62Safari 未対応 なしWebView Android 完全対応 75Chrome Android 完全対応 75Firefox Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 1529337.
Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
script-src-elem
実験的
Chrome 完全対応 75Edge 未対応 なしFirefox 未対応 なし
補足
未対応 なし
補足
補足 See bug 1529337.
IE 未対応 なしOpera 完全対応 62Safari 未対応 なしWebView Android 完全対応 75Chrome Android 完全対応 75Firefox Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 1529337.
Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
strict-dynamicChrome 完全対応 52Edge 未対応 なしFirefox 完全対応 52IE 未対応 なしOpera 完全対応 39Safari 未対応 なしWebView Android 完全対応 52Chrome Android 完全対応 52Firefox Android 未対応 なしOpera Android 完全対応 41Safari iOS 未対応 なしSamsung Internet Android 完全対応 6.0
style-srcChrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23IE 未対応 なしOpera 完全対応 15Safari 完全対応 7WebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり
style-src-attr
実験的
Chrome 完全対応 75Edge 未対応 なしFirefox 未対応 なし
補足
未対応 なし
補足
補足 See bug 1529338.
IE 未対応 なしOpera 完全対応 62Safari 未対応 なしWebView Android 完全対応 75Chrome Android 完全対応 75Firefox Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 1529338.
Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
style-src-elem
実験的
Chrome 完全対応 75Edge 未対応 なしFirefox 未対応 なし
補足
未対応 なし
補足
補足 See bug 1529338.
IE 未対応 なしOpera 完全対応 62Safari 未対応 なしWebView Android 完全対応 75Chrome Android 完全対応 75Firefox Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 1529338.
Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
trusted-types
実験的
Chrome ?
?
未対応 73 — 76
無効
無効 From version 73 until version 76 (exclusive): this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge 未対応 なしFirefox 未対応 なしIE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なしChrome Android ?
?
未対応 73 — 76
無効
無効 From version 73 until version 76 (exclusive): this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Firefox Android 未対応 なしOpera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なし
upgrade-insecure-requestsChrome 完全対応 43Edge 未対応 なし
補足
未対応 なし
補足
補足 Under consideration for future release.
Firefox 完全対応 42IE 未対応 なしOpera 完全対応 30Safari 完全対応 10.1WebView Android 完全対応 43Chrome Android 完全対応 43Firefox Android 完全対応 42Opera Android 完全対応 30Safari iOS 完全対応 10.3Samsung Internet Android 完全対応 4.0
Worker supportChrome 完全対応 ありEdge ? Firefox 完全対応 50IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 50Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 あり
worker-srcChrome 完全対応 59
補足
完全対応 59
補足
補足 Chrome 59 and higher skips the deprecated child-src directive.
Edge 未対応 なしFirefox 完全対応 58IE 未対応 なしOpera 完全対応 48Safari 未対応 なしWebView Android 完全対応 59
補足
完全対応 59
補足
補足 Chrome 59 and higher skips the deprecated child-src directive.
Chrome Android 完全対応 59
補足
完全対応 59
補足
補足 Chrome 59 and higher skips the deprecated child-src directive.
Firefox Android 完全対応 58Opera Android 完全対応 45Safari iOS 未対応 なしSamsung Internet Android 完全対応 7.0

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非推奨。新しいウェブサイトでは使用しないでください。
非推奨。新しいウェブサイトでは使用しないでください。
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。
非標準の名前を使用しています。
非標準の名前を使用しています。

関連情報

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

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