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 August 2016.
HTTP の Content-Security-Policy
(CSP) における default-src
ディレクティブは、他の CSP のフェッチディレクティブの代替として提供します。以下のディレクティブがいずれかが存在しないと、ユーザーエージェントは default-src
ディレクティブを探して、この値を使用します。
child-src
connect-src
font-src
frame-src
img-src
manifest-src
media-src
object-src
prefetch-src
script-src
script-src-elem
script-src-attr
style-src
style-src-elem
style-src-attr
worker-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 |