CSP:default-src
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 |
---|---|
指令类型 | 获取指令 |
语法
可以为 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 的浏览器中加载。