CSP: frame-ancestors

HTTP头部 Content-Security-Policy (CSP) 中的frame-ancestors 指令指定了一个可以包含<frame><iframe><object><embed>,or <applet>等元素的有效父级。

当该指令设置为'none'时,其作用类似于X-Frame-Options: DENY (该头部被一些老版本浏览器所支持)。

CSP版本(CSP version) 2
指令类型(Directive type) Navigation directive
是否后备使用default-src 否。如未设置则允许所有可能值。
该指令不支持通过<meta> 元素或通过 Content-Security-policy-Report-Only 头域所指定.

Syntax

frame-ancestors策略可以设置一个或多个源<source>:

Content-Security-Policy: frame-ancestors <source>;
Content-Security-Policy: frame-ancestors <source> <source>;

Sources

<source> 可以是如下内容:

frame-ancestors指令的语法类似于其他指令的源列表(source list,如default-src),但不允许'unsafe-eval'或'unsafe-inline' 。它也不会回退使用default-src的值。仅有如下的源列表是可用的:

<host-source>
一个Internet主机的名称或IP地址,以及一个可选的URL scheme和/或端口号。这些站点的地址可以包含一个可选的引导通配符(星号, '*'),或者你可以使用通配符(同样还是, '*')作为端口地址,以示这个源的所有合法端口地址都是有效的。
例子:
  • http://*.example.com: 匹配所有使用http:URL scheme并来对于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: URIs 作为内容源。 这是不安全的,攻击者可以用此来注入恶意代码。请谨慎使用,并不要令其作用于脚本。
  • 'mediastream:' 允许 mediastream: URIs 作为内容源.
  • 'blob:' 允许 blob: URIs 作为内容源.
  • 'filesystem:' 允许 filesystem: URIs 作为内容源.
'self'
指向一个该受保护文档所在的源,包含同样的URL schema和端口号。必须用单引号设置。有些浏览器会从源指令中排除blobfilesystem。需要允许这些内容类型的站点可以通过Data属性指定它们。
'none'
指向一个空集,意味着没有URL会被匹配。也需要单引号包裹设置。

Examples

Content-Security-Policy: frame-ancestors 'none';

Specifications

Specification Status Comment
Content Security Policy Level 3
frame-ancestors
Working Draft No changes.
Content Security Policy Level 2
frame-ancestors
Recommendation Initial definition.

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung Internet
Basic supportChrome Full support 40Edge Full support 15Firefox Full support 33
Notes
Full support 33
Notes
Notes Before Firefox 58, frame-ancestors is ignored in Content-Security-Policy-Report-Only.
IE No support NoOpera Full support 26Safari Full support 10WebView Android ? Chrome Android Full support YesEdge Mobile No support NoFirefox Android Full support 33
Notes
Full support 33
Notes
Notes Before Firefox for Android 58, frame-ancestors is ignored in Content-Security-Policy-Report-Only.
Opera Android ? Safari iOS Full support 9.3Samsung Internet Android Full support Yes

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.

See also

文档标签和贡献者

此页面的贡献者: ldwformat
最后编辑者: ldwformat,