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 表格僅在瀏覽器中載入