--- title: X-Frame-Options slug: Web/HTTP/Headers/X-Frame-Options tags: - Apache - Gecko - HAProxy - HTTP - Security - nginx - セキュリティ - レスポンスヘッダー translation_of: Web/HTTP/Headers/X-Frame-Options ---
X-Frame-Options
は HTTP のレスポンスヘッダーで、ブラウザーがページを {{HTMLElement("frame")}}, {{HTMLElement("iframe")}}, {{HTMLElement("embed")}}, {{HTMLElement("object")}} の中に表示することを許可するかどうかを示すために使用されます。サイトはコンテンツが他のサイトに埋め込まれないよう保証することで、{{interwiki("wikipedia", "クリックジャッキング")}}攻撃を防ぐために使用することができます。
強化されたセキュリティは、ユーザーが X-Frame-Options
に対応したブラウザーを使用して文書にアクセスした場合のみ提供されます。
Note: {{HTTPHeader("Content-Security-Policy")}} ヘッダーには frame-ancestors
ディレクティブがあり、対応しているブラウザーにおいてこのヘッダーを置き換えています。
ヘッダー種別 | {{Glossary("Response header", "レスポンスヘッダー")}} |
---|---|
{{Glossary("Forbidden header name", "禁止ヘッダー名")}} | いいえ |
X-Frame-Options
には二つの有効なディレクティブがあります。
X-Frame-Options: DENY X-Frame-Options: SAMEORIGIN
DENY
を指定した場合は、他のサイトからフレームにページを読み込もうとした時に失敗するだけでなく、同じサイトから読み込もうとした時にも失敗します。一方、 SAMEORIGIN
を指定した場合は、フレームの中のページを含むサイトが、ページを提供しているサイトと同じである限り、フレーム内でページを利用することができます。
DENY
SAMEORIGIN
ALLOW-FROM uri
(廃止)SAMEORIGIN
と同じ問題がありました。 — フレームの生成元が同じオリジンであるかどうかをチェックしません。 {{HTTPHeader("Content-Security-Policy")}} ヘッダーには frame-ancestors
ディレクティブがあり、代わりにこれを使用することができます。メモ: meta タグに設定しても意味がありません。例えば、 <meta http-equiv="X-Frame-Options" content="deny">
は効果がありません。使用しないでください。以下の例にあるように、 X-Frame-Options
は HTTP ヘッダーを通じて設定された場合のみ動作します。
Apache で X-Frame-Options ヘッダをすべてのページで送信するように設定するには、サイトの設定に以下の記述を追加してください。
Header always set X-Frame-Options "SAMEORIGIN"
Apache で X-Frame-Options
を DENY に設定するには、サイトの設定に以下の記述を追加してください
Header set X-Frame-Options "DENY"
nginx で X-Frame-Options
ヘッダーを送信するように設定するには、以下の記述を http、server、 location のいずれかの設定に追加してください。
add_header X-Frame-Options SAMEORIGIN always;
IIS で X-Frame-Options
ヘッダーを送信するように設定するには、サイトの Web.config
ファイルに以下の設定を追加してください。
<system.webServer> ... <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="SAMEORIGIN" /> </customHeaders> </httpProtocol> ... </system.webServer>
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 を使用して frameguard でヘッダーを設定します。以下の記述をサーバー設定に追加してください。
const helmet = require('helmet'); const app = express(); app.use(helmet.frameguard({ action: 'SAMEORIGIN' }));
他にも、直接 frameguard を使用することもできます。
const frameguard = require('frameguard') app.use(frameguard({ action: 'SAMEORIGIN' }))
仕様書 | 題名 |
---|---|
{{RFC("7034")}} | HTTP Header Field X-Frame-Options |
{{Compat("http.headers.X-Frame-Options")}}