CSP: default-src
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年8月.
HTTP の Content-Security-Policy (CSP) における default-src ディレクティブは、他の CSP のフェッチディレクティブの代替として提供します。以下のディレクティブがいずれかが存在しないと、ユーザーエージェントは default-src ディレクティブを探して、この値を使用します。
child-srcconnect-srcfont-srcframe-srcimg-srcmanifest-srcmedia-srcobject-srcprefetch-srcscript-srcscript-src-elemscript-src-attrstyle-srcstyle-src-elemstyle-src-attrworker-src
| CSP バージョン | 1 |
|---|---|
| ディレクティブ種別 | フェッチディレクティブ |
構文
Content-Security-Policy: default-src 'none'; Content-Security-Policy: default-src <source-expression-list>; このディレクティブは、次のいずれかの値を指定することができます。
'none'-
リソースは読み込まれません。単一引用符は必須です。
<source-expression-list>-
ソース表現の値を空白で区切ったリストです。この種類のリソースは、指定されたソース表現のいずれかと一致した場合に読み込まれます。このディレクティブでは、フェッチディレクティブの構文に掲載されているソース表現のいずれかが適用できます。
例
>default-src で継承されない場合
他のディレクティブが指定されている場合、default-src は影響しません。以下のヘッダー、
Content-Security-Policy: default-src 'self'; script-src https://example.com これは、下記のものと同じです。
Content-Security-Policy: connect-src 'self'; font-src 'self'; frame-src 'self'; img-src 'self'; manifest-src 'self'; media-src 'self'; object-src 'self'; script-src https://example.com; style-src 'self'; worker-src 'self' Firefox の default-src: none における SVG スプライトのブロック問題
メモ: この問題は Firefox 132 で修正されました。バグ 1773976 を参照してください。
CSP を作成する際には、まず default-src 'none' と指定してリソース読み込みをすべて制限し、その後、ポリシーを開放するディレクティブを追加して、必要なリソースのみを読み込むことができます。例えば、画像のみの同一オリジン読み込みを許可するには、次のようにします。
Content-Security-Policy: default-src 'none'; img-src 'self' しかし、ここで問題があります。例えば、 <use> 要素を使用して外部ファイルで定義された SVG スプライトを埋め込む場合、
<svg> <use href="/images/icons.svg#icon"/> </svg> SVG 画像は、default-src 'none' ポリシーを設定していると、 Firefox でブロックされます。 Firefox は、他のブラウザーがそうであるように、 SVG を埋め込み画像として扱わないため、 img-src 'self' では読み込むことができません。 Firefox で外部スプライトを読み込むには、 default-src 'self' を使用する必要があります。
あるいは、default-src 'none' ポリシーが厳格な要件である場合は、SVG スプライトを HTML ページにインラインで埋め込むことができます。
<body> <svg style="display: none"> <symbol id="icon" viewBox="0 0 24 24"> <path d="…" /> </symbol> </svg> … <svg> <use href="#icon" /> </svg> </body> 仕様書
| Specification |
|---|
| Content Security Policy Level 3> # directive-default-src> |