CSP: frame-ancestors
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2016.
HTTP の Content-Security-Policy
(CSP) である frame-ancestors
ディレクティブは <frame>
、<iframe>
、<object>
、<embed>
、<applet>
などを使ってページを埋め込むことのできる親を指定します。
このディレクティブを 'none'
にすることは、 X-Frame-Options
: deny
(これは古いブラウザーも同様に対応しています)を設定するのに似ています。
メモ: frame-ancestors
は、ページを埋め込むことができる親ソースを指定することができます。
これは、ページ内の iframe をどこから読み込むかを指定する frame-src
とは異なります。
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>
-
ホスト名または IP アドレスによるインターネットホストで、任意で URL スキームやポート番号を付けることができ、空白で区切ります。サイトのアドレスはワイルドカード (アスタリスク文字、
'*'
) で始めることができ、更にポート番号にワイルドカード ('*'
) を使ってすべての有効なポート番号をソースとして示すことができます。 例:-
http://*.example.com
:http:
のスキームを使用した、 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
でなければなりません。 CSP 仕様書の オリジンでの URL 表現とリダイレクトカウントが一致するか? によるものです。 -
- <scheme-source>
-
http:
またはhttps:
のようなスキームです。コロンは必要です。単一引用符は使用しないでください。 data スキームも指定することができます (非推奨)。-
data:
コンテンツのソースとしてdata:
URL が使えるようにします。 これは安全ではありません。攻撃者は任意の data: URI を挿入することもできます。使用は控え、スクリプトには絶対に使用しないでください。 mediastream:
コンテンツのソースとしてmediastream:
URI が使えるようにします。blob:
コンテンツのソースとしてblob:
URI が使えるようにします。filesystem:
コンテンツのソースとしてfilesystem:
URI が使えるようにします。
-
'self'
-
保護された文書が提供されたオリジンを、同じ URL スキームおよびポート番号で参照します。単一引用符が必要です。ブラウザーによっては source ディレクティブから
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;
仕様書
Specification |
---|
Content Security Policy Level 3 # directive-frame-ancestors |
ブラウザーの互換性
BCD tables only load in the browser