CSP:default-src

HTTP 的 Content-Security-Policy (CSP) default-src 指令充當其他 CSP 獲取指令 的後備。對於以下每個缺失的指令,使用者代理都會查詢 default-src 指令並使用此值。

CSP 版本 1
指令型別 獲取指令

語法

可以為 default-src 策略允許一個或多個源。

http
Content-Security-Policy: default-src <source>;
Content-Security-Policy: default-src <source> <source>;

<source> 可以是 CSP 源值 中列出的任何一個值。

請注意,這同一組值可用於所有 獲取指令(以及 許多其他指令)。

示例

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 的瀏覽器中載入。

另請參閱