20181209

コンテンツセキュリティポリシー (CSP)

【外部リンク】
https://developer.mozilla.org/ja/docs/Web/HTTP/CSP
コンテンツセキュリティポリシー (CSP)
ポリシーの設定セクション
ポリシーの設定には Content-Security-Policy HTTP ヘッダーを以下のように用います。

Content-Security-Policy: policy

一般的な適用例セクション
この章では、一般的なセキュリティポリシーの適用例を示します。

例 1セクション
サイト管理者が、すべてのコンテンツをサイト自身のドメイン (サブドメインを除く) から取得させたい場合。

Content-Security-Policy: default-src 'self'
例 2セクション
サイト管理者が、信頼されたドメインとそのすべてのサブドメインからのコンテンツを許可したい場合 (CSPがセットされたドメインと同一とは限らない)。

Content-Security-Policy: default-src 'self' *.trusted.com
例 3セクション
サイト管理者がウェブアプリのユーザーに、任意のドメインからの画像読み込みを許可したい場合。ただし、音声や動画は信頼された配信元からのものだけに制限し、すべてのスクリプトは、信頼されたコードをホストする特定のサーバーのみに制限する。

Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
この例では、コンテンツのデフォルト設定としてドキュメント自身のホストのみを許可していますが、以下の例外を認めています。

画像は任意の場所から読み込まれます (ワイルドカード "*" による指定に注意)。
メディアは media1.com と media2.com のものだけが許可されます (ただしサブドメインは許可されません)。
実行可能なスクリプトは userscripts.example.com のものだけ許可されます。
例 4セクション
サイト管理者がオンラインバンキングのウェブサイトについて、リクエスト時の盗聴攻撃を防ぐため、すべてのコンテンツを SSL で読み込むようにしたい場合。

Content-Security-Policy: default-src https://onlinebanking.jumbobank.com
この例では、ドメインを単一オリジン onlinebanking.jumbobank.com のみに制限し、かつドキュメントへのアクセスを HTTPS のみに制限しています。

例 5セクション
サイト管理者がウェブメールサイトについて、メール内の HTML を許可し、任意のドメインから画像の読み込みを許可するが、JavaScript や他に危険性のあるコンテンツは許可したくない場合。

Content-Security-Policy: default-src 'self' *.mailsite.com; img-src *
この例では、 script-src を指定していないことに注意してください。この CSP を適用したサイトは、スクリプトに関して default-src ディレクティブの設定を適用します。つまり、スクリプトは元のサーバーのものだけ読み込まれます。

ブラウザーの対応セクション
Take this quick survey to help us improve our browser compatibility tables
デスクトップ
モバイル
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Android webview
Android 版 Chrome
Edge Mobile
Android 版 Firefox
Android 版 Opera
iOSのSafari
Samsung Internet
Content-Security-Policy
完全対応 25補足 開く
完全対応 14
完全対応 23補足 開く
完全対応 10補足 開く
完全対応 15
完全対応 7補足 開く
完全対応 あり
完全対応 あり
完全対応 あり
完全対応 23
?
完全対応 7.1補足 開く
完全対応 あり
base-uri
完全対応 40
未対応 なし
完全対応 35
未対応 なし
完全対応 27
完全対応 10
完全対応 あり
完全対応 あり
未対応 なし
完全対応 35
?
完全対応 9.3
完全対応 あり
block-all-mixed-content
完全対応 あり
?
完全対応 48
未対応 なし
完全対応 あり
?
完全対応 あり
完全対応 あり
?
完全対応 48
?
?
完全対応 あり
child-src 非推奨
完全対応 40
完全対応 15
完全対応 45
未対応 なし
完全対応 27
完全対応 10
完全対応 あり
完全対応 あり
未対応 なし
完全対応 45
?
完全対応 9.3
完全対応 あり
connect-src
完全対応 25
完全対応 14
完全対応 23補足 開く
未対応 なし
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 23
?
完全対応 7.1
完全対応 あり
default-src
完全対応 25
完全対応 14
完全対応 23
未対応 なし
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 23
?
完全対応 7.1
完全対応 あり
disown-opener 実験的
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
font-src
完全対応 25
完全対応 14
完全対応 23
未対応 なし
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 23
?
完全対応 7.1
完全対応 あり
form-action
完全対応 40
完全対応 15
完全対応 36
未対応 なし
完全対応 27
完全対応 10
完全対応 あり
完全対応 あり
未対応 なし
完全対応 36
?
完全対応 9.3
完全対応 あり
frame-ancestors
完全対応 40
完全対応 15
完全対応 33補足 開く
未対応 なし
完全対応 26
完全対応 10
?
完全対応 あり
未対応 なし
完全対応 33補足 開く
?
完全対応 9.3
完全対応 あり
frame-src
完全対応 25
完全対応 14
完全対応 23
未対応 なし
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 23
?
完全対応 7.1
完全対応 あり
img-src
完全対応 25
完全対応 14
完全対応 23
未対応 なし
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 23
?
完全対応 7.1
完全対応 あり
manifest-src
完全対応 あり
未対応 なし
完全対応 41
未対応 なし
完全対応 あり
未対応 なし
完全対応 あり
完全対応 あり
未対応 なし
完全対応 41
?
未対応 なし
完全対応 あり
media-src
完全対応 25
完全対応 14
完全対応 23
未対応 なし
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 23
?
完全対応 7.1
完全対応 あり
navigate-to 実験的
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
object-src
完全対応 25
完全対応 14
完全対応 23
未対応 なし
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 23
?
完全対応 7.1
完全対応 あり
plugin-types
完全対応 40
完全対応 15
未対応 なし補足 開く
未対応 なし
完全対応 27
完全対応 10
完全対応 あり
完全対応 あり
未対応 なし
未対応 なし
?
完全対応 9.3
完全対応 あり
referrer 非推奨非標準
未対応33 — 56
未対応 なし
未対応37 — 62
未対応 なし
未対応? — 43
未対応 なし
未対応37 — 56
未対応33 — 56
未対応 なし
未対応37 — 62
未対応? — 43
未対応 なし
完全対応 あり
report-sample 実験的
完全対応 59
?
?
?
完全対応 46
?
完全対応 59
完全対応 59
?
?
完全対応 46
?
完全対応 7.0
report-to
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
未対応 なし
report-uri 非推奨
完全対応 25
完全対応 14
完全対応 23
未対応 なし
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 23
?
完全対応 7.1
完全対応 あり
require-sri-for 実験的
完全対応 54
未対応 なし
完全対応 49無効 開く
未対応 なし
完全対応 41
未対応 なし
完全対応 54
完全対応 54
未対応 なし
完全対応 49無効 開く
完全対応 41
未対応 なし
完全対応 6.0
sandbox
完全対応 25
完全対応 14
完全対応 50
完全対応 10
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 50
?
完全対応 7.1
完全対応 あり
script-src
完全対応 25
完全対応 14
完全対応 23
未対応 なし
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 23
?
完全対応 7.1
完全対応 あり
strict-dynamic
完全対応 52
未対応 なし
完全対応 52
未対応 なし
完全対応 39
未対応 なし
完全対応 52
完全対応 52
未対応 なし
未対応 なし
完全対応 39
未対応 なし
完全対応 6.0
style-src
完全対応 25
完全対応 14
完全対応 23
未対応 なし
完全対応 15
完全対応 7
完全対応 あり
完全対応 あり
?
完全対応 23
?
完全対応 7.1
完全対応 あり
upgrade-insecure-requests
完全対応 43
未対応 なし補足 開く
完全対応 42
未対応 なし
完全対応 30
完全対応 10.1
完全対応 43
完全対応 43
未対応 なし
完全対応 42
完全対応 30
完全対応 10.3
完全対応 4.0
worker-src
完全対応 59補足 開く
未対応 なし
完全対応 58
未対応 なし
完全対応 48
未対応 なし
完全対応 59補足 開く
完全対応 59補足 開く
未対応 なし
完全対応 58
完全対応 48
未対応 なし
完全対応 7.0
凡例
完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非推奨。新しいウェブサイトでは使用しないでください。
非推奨。新しいウェブサイトでは使用しないでください。
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

【外部リンク】
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Security-Policy
// ヘッダー
Content-Security-Policy: default-src https:

// メタタグ
<meta http-equiv="Content-Security-Policy" content="default-src 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/
仕様書セクション
仕様書 状態 備考
Content Security Policy Level 3 草案 disown-opener, manifest-src, navigate-to, report-to, strict-dynamic, worker-src を追加。 frame-src の非推奨を解除。 report-uri を report-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 を定義。
ブラウザーの対応セクション
Take this quick survey to help us improve our browser compatibility tables
デスクトップ
モバイル
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Android webview
Android 版 Chrome
Edge Mobile
Android 版 Firefox
Android 版 Opera
iOSのSafari
Samsung Internet
基本対応
完全対応 25補足 開く
完全対応 14
完全対応 23補足 開く
完全対応 10補足 開く
完全対応 15
完全対応 7補足 開く
完全対応 あり
完全対応 あり
完全対応 あり
完全対応 23
?
完全対応 7.1補足 開く
完全対応 あり
<meta> element support
完全対応 あり
完全対応 あり
完全対応 45
未対応 なし
完全対応 あり
完全対応 あり
完全対応 あり
完全対応 あり
完全対応 あり
完全対応 45
完全対応 あり
完全対応 あり
完全対応 あり
Worker support
完全対応 あり
?
完全対応 50
未対応 なし
?
未対応 なし
完全対応 あり
完全対応 あり
?
完全対応 50
?
未対応 なし
完全対応 あり
凡例
完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実装ノートを参照してください。
実装ノートを参照してください。
関連情報セクション
Content-Security-Policy-Report-Only
Content Security in WebExtensions
Display security and privacy policies In Firefox Developer Tools


【外部リンク】
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
The HTTP Content-Security-Policy response header allows web site administrators to control resources the user agent is allowed to load for a given page. With a few exceptions, policies mostly involve specifying server origins and script endpoints. This helps guard against cross-site scripting attacks (XSS).

For more information, see also this article on Content Security Policy (CSP).

Header type Response header
Forbidden header name no

【外部リンク】
https://developers.google.com/web/fundamentals/security/csp/?hl=ja
コンテンツ セキュリティ ポリシー
コンテンツ セキュリティ ポリシー 目次 取得元のホワイトリスト 幅広いリソースに適用するポリシー 実装の詳細 サンドボックス meta タグ インラインコードは有害と見なす やむを得ずインライン スクリプトを使用しなければならない場合 eval にも注意 レポート Report-Only 実際の使い方 ユースケース 1: ソーシャル メディア ウィジェット ユースケース 2: ロックダウン ユースケース 3: SSL のみ 今後について

【外部リンク】
https://helpx.adobe.com/jp/fonts/using/content-security-policy.html
CSP と Adobe Fonts の併用は推奨されません
CSP の使用
最終公開日: 2018年10月26日
コンテンツセキュリティポリシー(CSP)は、Web サイトで使用できるスクリプトやリソースを制限するために使用されます。例えば、CSP を使用して、Web サイトでの外部スクリプトの実行を阻止することができます。
CSP と Adobe Fonts の併用は推奨されません


--

注目の投稿

cURL error 60: SSL certificate problem: unable to get local issuer certificate

cURL error 60: SSL certificate problem: unable to get local issuer certificate 更新失敗: ダウンロードに失敗しました。 cURL error 60: SSL certificate problem: ...

人気の投稿