HTTP の Content-Security-Policy (CSP) の connect-src ディレクティブは、スクリプトインターフェイスを使用して読み込むことができる URL を制限します。以下の API が制限の対象となります。

CSP バージョン 1
ディレクティブ種別 フェッチディレクティブ
default-src による代替 あり。このディレクティブがない場合、ユーザーエージェントは default-src ディレクティブを探します。

構文

connect-src ポリシーには、1つ以上のソースが許可されています。

Content-Security-Policy: connect-src <source>;
Content-Security-Policy: connect-src <source> <source>;

ソース

<source> は以下のうちの一つを採ることができます。

<host-source>
インターネットホストの名前または IP アドレスで、同様に任意で URL スキームやポート番号も指定することができます。サイトのアドレスはワイルドカード (アスタリスク文字、 '*') で始めることもでき、またポート番号にワイルドカード (同様に、 '*') を使用して、ソースのすべての違法でないポートが有効であることを示すことができます。
例:
  • http://*.example.com: example.com の何れかのサブドメインから、 http: URL スキームを使用して読み込むすべての試みに一致します。
  • mail.example.com:443: mail.example.com の443番ポートへアクセスするすべての試みに一致します。
  • https://store.example.com: store.example.com から https: を使用して読み込むhすべての試みに一致します。
<scheme-source>
'http:' または 'https:' などのスキーマです。コロンは必須で、単一引用符は使用しません。データスキーマを指定することもできます (お勧めしません)。
  • data: では data: URI をコンテンツのソースとして使用することができます。これは安全ではありません。攻撃者が任意の data: URI を挿入することができます。この使用は控えめにして、スクリプトでは使用しないでください。
  • mediastream: では mediastream: URI をコンテンツのソースとして使用することができます。
  • blob: では blob: URI をコンテンツのソースとして使用することができます。
  • filesystem: では filesystem: URI をコンテンツのソースとして使用することができます。
'self'
保護された文書が提供された、同じ URL スキーム、同じポート番号のオリジンを示します。単一引用符を含める必要があります。ブラウザーによっては、 source ディレクティブから blobfilesystem を特別に除外します。これらの種類のコンテンツを許可する必要がある場合は、 data 属性を使用して指定することができます。
'unsafe-inline'
インラインの <script> 要素、 javascript: URL、インラインイベントハンドラー、インラインの <style> 要素などのインラインリソースを使用することを許可します。単一引用符を含める必要があります。
'unsafe-eval'
文字列からコードを生成するために eval() および同等のメソッドを使用することを許可します。単一引用符を含める必要があります。
'none'
空のセット、つまり一致する URL がないことを示します。単一引用符が必要です。
'nonce-<base64-value>'
暗号化ノンス (一度だけ使われる数値) を使用する特定のインラインスクリプトのためのホワイトリストです。サーバーはポリシーを転送するたびに固有のノンスを生成する必要があります。リソースのポリシーを他の方法で回避することを難しくするため、推測できないノンスを提供することが重要です。例えば安全でないインラインスクリプトを参照してください。ノンスを指定すると、最近のブラウザーは、ノンスの対応がない古いブラウザーのために設定されている可能性がある 'unsafe-inline' を無視するようになります。
'<hash-algorithm>-<base64-value>'
スクリプトまたはスタイルの sha256, sha384, sha512 の何れかのハッシュです。このソースは、ハッシュを生成するために使用する暗号化アルゴリズムと、スクリプトまたはスタイルのハッシュを base64 でエンコードしたものの二つの部分をダッシュで区切ったもので構成されます。ハッシュを生成するときは、 <script> または <style> タグを含めないようにし、大文字・小文字の区別と、ホワイトスペースの扱い (先頭や末尾のホワイトスペースを含む) に注意してください。例えば安全でないインラインスクリプトを参照してください。 CSP 2.0 では、これはインラインスクリプトにのみ適用されます。 CSP 3.0 では script-src で外部スクリプトが指定された場合にも利用できます。

違反の場合

以下の CSP ヘッダーを指定した場合、

Content-Security-Policy: connect-src https://example.com/

以下のコネクションはブロックされ、読み込まれません。

<a ping="https://not-example.com">

<script>
  var xhr = new XMLHttpRequest(); 
  xhr.open('GET', 'https://not-example.com/'); 
  xhr.send();

  var ws = new WebSocket("https://not-example.com/");

  var es = new EventSource("https://not-example.com/"); 

  navigator.sendBeacon("https://not-example.com/", { ... });
</script>

仕様書

仕様書 状態 備考
Content Security Policy Level 3
connect-src の定義
草案 変更なし
Content Security Policy Level 2
connect-src の定義
勧告 初回定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
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 完全対応 あり

凡例

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

互換性のメモ

  • Firefox 23 以前では、 xhr-srcconnect-src ディレクティブの代わりに、 XMLHttpRequest を制限するだけのために使用されていました。

関連情報

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

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