CSP:default-src
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 |
|---|---|
| 指令型別 | 獲取指令 |
語法
可以為 default-src 策略允許一個或多個源。
http
Content-Security-Policy: default-src <source>;
Content-Security-Policy: default-src <source> <source>;
源
示例
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 雪碧圖阻止問題
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'(有關更多資訊,請參見 錯誤 1773976 和 此 CSP 規範問題)。
或者,如果 default-src 'none' 策略是硬性要求,則可以在 HTML 頁面中內聯包含 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>
規範
| 規範 |
|---|
| 內容安全策略級別 3 # directive-default-src |
瀏覽器相容性
BCD 表格僅在啟用 JavaScript 的瀏覽器中載入。