CSP:frame-ancestors
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2018年1月.
HTTP 标头 Content-Security-Policy(CSP)中的 frame-ancestors 指令指定了一个可以包含 <frame>、<iframe>、<object> 或 <embed> 等元素的有效父级。
当该指令设置为 'none' 时,其作用类似于 X-Frame-Options: DENY(该标头被一些老版本浏览器所支持)。
| CSP 版本(CSP version) | 2 |
|---|---|
| 指令类型(Directive type) | Navigation directive |
是否后备使用default-src |
否。如未设置则允许所有可能值。 |
该指令不支持通过<meta> 元素或通过
Content-Security-policy-Report-Only
头域所指定。
|
|
语法
frame-ancestors策略可以设置一个或多个源<source>:
Content-Security-Policy: frame-ancestors <source>;
Content-Security-Policy: frame-ancestors <space separated list of sources>;
源
<source> 可以是如下内容:
备注:
frame-ancestors 指令的语法类似于其他指令的源列表(source list,如default-src),但不允许 'unsafe-eval' 或'unsafe-inline' 。它也不会回退使用 default-src 的值。仅有如下的源列表是可用的:
- <host-source>
-
一个 Internet 主机的名称或 IP 地址,以及一个可选的 URL 方案和/或端口号。这些站点的地址可以包含一个可选的引导通配符(星号,
'*'),或者你可以使用通配符(同样还是,'*')作为端口地址,以示这个源的所有合法端口地址都是有效的。 例子:_http://_.example.com: 匹配所有使用http:URL 方案并来对于 example.com 及其子域名的加载意图。mail.example.com:443: 匹配所有对于 mail.example.com 在 443 端口的访问意图。https://store.example.com: 匹配所有使用https:访问 store.example.com 的意图。
- <scheme-source>
-
一个 schema 配置,比如'http:'或'https:'。注意,冒号是必要的。你同样也可以指定一个 data schema(但并不推荐)。
- '
data:' 允许data:URI 作为内容源。这是不安全的,攻击者可以用此来注入恶意代码。请谨慎使用,并不要令其作用于脚本。 'mediastream:'允许mediastream:URI 作为内容源。'blob:'允许blob:URI 作为内容源。'filesystem:'允许filesystem:URI 作为内容源。
- '
'self'-
指向一个该受保护文档所在的源,包含同样的 URL schema 和端口号。必须用单引号设置。有些浏览器会从源指令中排
除 blob和filesystem。需要允许这些内容类型的站点可以通过 Data 属性指定它们。 'none'-
指向一个空集,意味着没有 URL 会被匹配。也需要单引号包裹设置。
示例
Content-Security-Policy: frame-ancestors 'none';
规范
| Specification |
|---|
| Content Security Policy Level 3> # directive-frame-ancestors> |
浏览器兼容性
Loading…