X-Frame-Options ヘッダー
メモ:
このヘッダーで提供されるオプションよりも包括的な設定については、Content-Security-Policy ヘッダーの frame-ancestors ディレクティブを参照してください。
HTTP の X-Frame-Options は レスポンスヘッダー で、ブラウザーがページを <frame>、<iframe>、<embed>、<object> の中に表示することを許可するかどうかを示すために使用することができます。サイトはこれを使用して、コンテンツが他のサイトに埋め込まれないよう保証することで、クリックジャッキングやいくつかのサイト間情報漏洩攻撃を防ぐことができます。
このヘッダーが送信されず、かつウェブサイト側に埋め込みを制限する他の仕組み(frame-ancestors のような CSP ディレクティブなど)が実装されていない場合、ブラウザーは他のサイトによるこの文書の埋め込みを許可します。
| ヘッダー種別 | レスポンスヘッダー |
|---|
構文
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
ディレクティブ
DENY-
この文書は、オリジンに関係なく、いかなるフレーム内でも読み込むことはできません(同一オリジンでの埋め込みも、オリジンを越える埋め込みもブロックされます)。
SAMEORIGIN-
この文書を埋め込むことができるのは、すべての祖先フレームが、このページ自体と同じオリジンを持っている場合に限られます。
ALLOW-FROM origin-
これは古いディレクティブです。このディレクティブを持つレスポンスヘッダーに遭遇した現行のブラウザーは、そのヘッダーを完全に無視します。 HTTP の
Content-Security-Policyヘッダーにはframe-ancestorsディレクティブがありますので、そちらを使用してください。
例
警告:
X-Frame-Options を <meta> 要素に設定しても(例えば、<meta http-equiv="X-Frame-Options" content="deny">)効果はありません。 X-Frame-Options は以下の例で示すように、 HTTP ヘッダーを通じて設定された場合のみ動作します。
Apache の設定
Apache で X-Frame-Options ヘッダーをすべてのページで送信するように設定するには、サイトの設定に以下の記述を追加してください。
Header always set X-Frame-Options "SAMEORIGIN"
Apache で X-Frame-Options を DENY に設定するには、サイトの設定に以下の記述を追加してください
Header set X-Frame-Options "DENY"
nginx の設定
Nginx で X-Frame-Options ヘッダーを送信するように設定するには、以下の記述を http、server、 location のいずれかの設定に追加してください。
add_header X-Frame-Options SAMEORIGIN always;
X-Frame-Options ヘッダーで DENY を設定するには、次のようにします。
add_header X-Frame-Options DENY always;
IIS の設定
IIS で X-Frame-Options ヘッダーを送信するように設定するには、サイトの Web.config ファイルに以下の設定を追加してください。
<system.webServer>
…
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
…
</system.webServer>
詳しくは、IIS マネージャーのユーザーインターフェイスを使用してこの構成を設定する方法についてのマイクロソフトのサポート記事を参照してください。
HAProxy の設定
HAProxy で X-Frame-Options ヘッダーを送信するように設定するには、以下の記述を front-end、listen、backend のいずれかの設定に追加してください。
rspadd X-Frame-Options:\ SAMEORIGIN
他にも、より新しいバージョンでは次のような設定ができます。
http-response set-header X-Frame-Options SAMEORIGIN
Express の設定
X-Frame-Options ヘッダーを Helmet を使用して SAMEORIGIN に設定するには、サーバー設定に次のものを追加してください。
import helmet from "helmet";
const app = express();
app.use(
helmet({
xFrameOptions: { action: "sameorigin" },
}),
);
仕様書
| 仕様書 |
|---|
| HTML> # the-x-frame-options-header> |