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 策略設定一個或多個源

http
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 方案和埠號。您必須包含單引號。一些瀏覽器明確地將 blobfilesystem 排除在源指令之外。需要允許這些內容型別的網站可以使用 Data 屬性指定它們。

'none'

指的是空集;也就是說,沒有 URL 匹配。單引號是必需的。

示例

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

另請參閱