CSP:frame-ancestors
HTTP Content-Security-Policy (CSP) 的 frame-ancestors 指令指定了可以使用 <frame>、<iframe>、<object> 或 <embed> 嵌入页面的有效父级。
将此指令设置为 'none' 类似于 X-Frame-Options: deny(在旧浏览器中也支持)。
注意:frame-ancestors 允许您指定哪些父源可以嵌入页面。这与 frame-src 不同,后者允许您指定页面中的 iframe 可以从何处加载。
| CSP 版本 | 2 |
|---|---|
| 指令类型 | 导航指令 |
default-src 回退 |
否。不设置此项允许任何内容。 |
此指令在 <meta> 元素中不受支持。 |
|
语法
可以为 frame-ancestors 策略设置一个或多个源
Content-Security-Policy: frame-ancestors <source>;
Content-Security-Policy: frame-ancestors <space separated list of sources>;
来源
<source> 可以是以下之一
注意:frame-ancestors 指令的语法类似于其他指令的源列表(例如 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。
警告:如果未为
host-source指定 URL 方案,并且 iframe 从httpsURL 加载,则加载 iframe 的页面的 URL 也必须是https,根据 URL 是否与具有重定向计数的来源表达式匹配? CSP 规范的章节。 - <scheme-source>
-
例如
http:或https:这样的方案。冒号是必需的,并且方案不应被引用。您还可以指定数据方案(不推荐)。data:允许data:URL 用作内容源。这是不安全的;攻击者还可以注入任意的data:URL。谨慎使用此功能,并且绝对不要用于脚本。mediastream:允许mediastream:URI 用作内容源。blob:允许blob:URI 用作内容源。filesystem:允许filesystem:URI 用作内容源。
'self'-
指的是提供受保护文档的来源,包括相同的 URL 方案和端口号。您必须包含单引号。一些浏览器明确地将
blob和filesystem排除在源指令之外。需要允许这些内容类型的网站可以使用 Data 属性指定它们。 'none'-
指的是空集;也就是说,没有 URL 匹配。单引号是必需的。
示例
Content-Security-Policy: frame-ancestors 'none';
Content-Security-Policy: frame-ancestors 'self' https://www.example.org;
Content-Security-Policy: frame-ancestors 'self' https://example.org https://example.com https://store.example.com;
规范
| 规范 |
|---|
| 内容安全策略级别 3 # directive-frame-ancestors |
浏览器兼容性
BCD 表格仅在浏览器中加载