X-Frame-Options

X-Frame-Options HTTP のレスポンスヘッダーで、ブラウザーがページを <frame> <iframe> <embed> <object> の中に表示することを許可するかどうかを示すために使用します。サイトはコンテンツが他のサイトに埋め込まれないよう保証することで、 クリックジャッキング 攻撃を防ぐために使用することができます。

セキュリティが強化されるのは、ユーザーが X-Frame-Options に対応したブラウザーを使用して文書にアクセスした場合のみです。

メモ: Content-Security-Policy ヘッダーに frame-ancestors ディレクティブがあり、対応しているブラウザーにおいてこのヘッダーを 置き換えて います。

ヘッダー種別 レスポンスヘッダー 禁止ヘッダー名

構文

X-Frame-Options には 2 つの有効なディレクティブがあります。

X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN

ディレクティブ

DENY を指定した場合は、フレームにページを他のサイトから読み込もうとした時だけでなく、同じサイトから読み込もうとした時にも失敗します。一方、 SAMEORIGIN を指定した場合は、フレームの中のページを含むサイトが、ページを提供しているサイトと同じである限り、フレーム内でページを利用することができます。

ページをフレーム内に表示することは、それを試みているサイトが何であろうとできません。

SAMEORIGIN

ページは、ページ自体と同じオリジンのフレーム内でのみ表示されます。仕様書ではこのオプションを最上位、親、チェーン全体のどれに適用するかをブラウザーベンダーに任せていますが、すべての祖先が同じオリジンでない限り、利用価値がないと議論されています。 ( Firefox バグ 725490 を参照)。対応の詳細は ブラウザーの互換性 もご覧ください。

ALLOW-FROM uri

これは廃止されたディレクティブであり、最近のブラウザーでは動作しません。使用しないでください。対応している古いブラウザーでは、ページは指定されたオリジン uri のフレーム内でのみ表示されます。なお、以前の Firefox では SAMEORIGIN と同じ問題がありました。 — フレームの祖先が同じオリジンであるかどうかをチェックしません。 Content-Security-Policy ヘッダーには frame-ancestors ディレクティブがあり、代わりにこれを使用することができます。

メモ: X-Frame-Options を <meta> 要素に設定しても意味がありません。例えば、 <meta http-equiv="X-Frame-Options" content="deny"> は効果がありません。使用しないでください。以下の例にあるように、 X-Frame-Options は HTTP ヘッダーを通じて設定された場合のみ動作します。