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 的浏览器中加载。

另请参阅