HTTP Content-Security-Policybase-uri ディレクティブは、ドキュメントの要素 <base> で、使用できる URL を制限します。この値が存在しない場合は、任意の URI が許可されます。このディレクティブが存在しない場合、ユーザーエージェントは、<base> 要素の値を使用します。

CSP version 2
Directive type Document directive
default-src fallback 設定しないと、任意のURLが許可されます。

構文

1 つまたは複数のリソースを base-uri ポリシーに使用:

Content-Security-Policy: base-uri <source>;
Content-Security-Policy: base-uri <source> <source>;

ソース

このディレクティブは他の CSP ディレクティブと同じ引数を使用しますが、キーワードの 'unsafe-inline''strict-dynamic' などは意味がありません。

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

<host-source>
名前又は IP アドレスによるインターネットホストで、任意で URL スキームやポート番号を付けることができます。サイトのアドレスはワイルドカード (アスタリスク文字、 '*') で始めることができ、更にポート番号にワイルドカード ('*') を使ってすべての有効なポート番号をソースとして示すことができます。
例:
  • http://*.example.com: http: のスキームを使用した、 example.com のすべてのサブドメインからのすべての読み込みの試行に一致します。
  • mail.example.com:443: mail.example.com の443番ポートへのアクセスの試行に一致します。
  • https://store.example.com: https: を使用した store.example.com へのアクセスの試行に一致します。
<scheme-source>
'http:' 又は 'https:' のようなスキーマです。コロンは必要です。単一引用符は使用しないでください。 data スキーマも指定することができます (非推奨)。
  • data: コンテンツのソースとして data: の URI を使うことができるようにします。これは安全ではありません。攻撃者は任意の data: URI を挿入することもできます。使用は控え、スクリプトには絶対に使用しないでください。
  • mediastream: mediastream: の URI をコンテンツのソースとして使用することができるようにします。
  • blob: blob: の URI をコンテンツのソースとして使用することができるようにします。
  • filesystem: filesystem: の URI をコンテンツのソースとして使用することができるようにします。
'self'
保護された文書が提供されたオリジンを、同じ URL スキーム及びポート番号で参照します。単一引用符が必要です。ブラウザーによっては source ディレクティブから blob 及び filesystem を独自に除外していることがあります。これらのコンテンツ種別を許可する必要がるサイトは、 Data 属性を使用して指定することができます。
'unsafe-inline'
インラインの <script> 要素、 javascript: の URL、インラインイベントハンドラー、インライン <style> 要素のような、インラインリソースの使用を許可します。単一引用符が必要です。
'unsafe-eval'
文字列からコードを生成する eval() 及び同様のメソッドの利用を許可します。単一引用符が必要です。
'none'
空のセットを参照します。つまり、一致する URL はありません。単一引用符が必要です。
'nonce-<base64-value>'
A whitelist for specific inline scripts using a cryptographic nonce (number used once). The server must generate a unique nonce value each time it transmits a policy. It is critical to provide an unguessable nonce, as bypassing a resource’s policy is otherwise trivial. See unsafe inline script for an example. Specifying nonce makes a modern browser ignore 'unsafe-inline' which could still be set for older browsers without nonce support.
'<hash-algorithm>-<base64-value>'
A sha256, sha384 or sha512 hash of scripts or styles. The use of this source consists of two portions separated by a dash: the encryption algorithm used to create the hash and the base64-encoded hash of the script or style. When generating the hash, don't include the <script> or <style> tags and note that capitalization and whitespace matter, including leading or trailing whitespace. See unsafe inline script for an example. In CSP 2.0 this applied only to inline scripts. CSP 3.0 allows it in the case of script-src for external scripts.
'strict-dynamic'
The strict-dynamic source expression specifies that the trust explicitly given to a script present in the markup, by accompanying it with a nonce or a hash, shall be propagated to all the scripts loaded by that root script. At the same time, any whitelist or source expressions such as 'self' or 'unsafe-inline' will be ignored. See script-src for an example.
'report-sample'
Requires a sample of the violating code to be included in the violation report.

Meta タグの設定

<meta http-equiv="Content-Security-Policy" content="base-uri 'self'">

Apache の設定

<IfModule mod_headers.c> 
Header set Content-Security-Policy "base-uri 'self'";
</IfModule>

Nginx の設定

add_header Content-Security-Policy "base-uri 'self';"

違反になる場合

ドメインが example.com でないので、https://example.com に設定された <base> 要素の href が CSP 違反になります。

<meta http-equiv="Content-Security-Policy" content="base-uri 'self'">
<base href="https://example.com/">

// Error: Refused to set the document's base URI to 'https://example.com/' 
// because it violates the following Content Security Policy 
// directive: "base-uri 'self'"

仕様書

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

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
基本対応Chrome 完全対応 40Edge 未対応 なしFirefox 完全対応 35IE 未対応 なしOpera 完全対応 27Safari 完全対応 10WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 未対応 なしFirefox Android 完全対応 35Opera Android ? Safari iOS 完全対応 9.3Samsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明

関連情報

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

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