Content-Security-Policy: default-src 指令
HTTP Content-Security-Policy (CSP) 的 default-src 指令作為其他 CSP fetch 指令的備用方案。對於下列每個缺失的指令,使用者代理都會查詢 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 |
|---|---|
| 指令型別 | 獲取指令 |
語法
http
Content-Security-Policy: default-src 'none';
Content-Security-Policy: default-src <source-expression-list>;
此指令可以具有以下值之一
'none'-
不允許載入任何資源。單引號是必需的。
<source-expression-list>-
由空格分隔的源表示式值列表。如果資源與任何給定的源表示式匹配,則可以載入。對於此指令,Fetch 指令語法中列出的任何源表示式值都適用。
示例
不繼承 default-src
如果指定了其他指令,default-src 不會影響它們。以下頭部
http
Content-Security-Policy: default-src 'self'; script-src https://example.com
與此相同
http
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 中修復;請參閱 bug 1773976。
建立 CSP 時,可以從 default-src 'none' 開始,以鎖定所有資源載入,然後新增更多指令來開放策略,從而只允許載入所需的資源。例如,僅允許同源影像載入:
http
Content-Security-Policy: default-src 'none'; img-src 'self'
然而,這裡有一個問題。如果你透過 <use> 元素嵌入外部檔案中定義的 SVG 雪碧圖,例如
svg
<svg>
<use href="/images/icons.svg#icon"/>
</svg>
如果你設定了 default-src 'none' 策略,你的 SVG 影像將在 Firefox 中被阻止。Firefox 不像其他瀏覽器那樣將 SVG 視為嵌入式影像,因此 img-src 'self' 將不允許它們載入。如果你希望外部雪碧圖在 Firefox 中載入,你需要使用 default-src 'self'。
或者,如果 default-src 'none' 策略是硬性要求,你可以將 SVG 雪碧圖內聯到 HTML 頁面中:
html
<body>
<svg style="display: none">
<symbol id="icon" viewBox="0 0 24 24">
<path d="…" />
</symbol>
</svg>
…
<svg>
<use href="#icon" />
</svg>
</body>
規範
| 規範 |
|---|
| 內容安全策略級別 3 # directive-default-src |
瀏覽器相容性
載入中…