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 从https
URL 加载,则加载 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 表格仅在浏览器中加载