From a6abefcf6c32ff6cdeb3ceaeeb8adeddf4bb21a9 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Fri, 24 Sep 2021 23:41:42 +0900 Subject: Web/HTTP/Headers/X-Frame-Options を更新 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 2021/08/24 時点の英語版に同期 --- files/ja/web/http/headers/x-frame-options/index.md | 186 ++++++++++----------- 1 file changed, 88 insertions(+), 98 deletions(-) diff --git a/files/ja/web/http/headers/x-frame-options/index.md b/files/ja/web/http/headers/x-frame-options/index.md index 2f334140f9..07271874d6 100644 --- a/files/ja/web/http/headers/x-frame-options/index.md +++ b/files/ja/web/http/headers/x-frame-options/index.md @@ -2,155 +2,145 @@ title: X-Frame-Options slug: Web/HTTP/Headers/X-Frame-Options tags: - - Apache - Gecko - HAProxy - HTTP - - Security - - nginx - - セキュリティ - レスポンスヘッダー + - セキュリティ + - nginx +browser-compat: http.headers.X-Frame-Options translation_of: Web/HTTP/Headers/X-Frame-Options --- -
{{HTTPSidebar}}
+{{HTTPSidebar}} + +**`X-Frame-Options`** は [HTTP](/en-US/docs/Web/HTTP) のレスポンスヘッダーで、ブラウザーがページを {{HTMLElement("frame")}}、{{HTMLElement("iframe")}}、{{HTMLElement("embed")}}、{{HTMLElement("object")}} の中に表示することを許可するかどうかを示すために使用します。サイトはコンテンツが他のサイトに埋め込まれないよう保証することで、{{interwiki("wikipedia", "クリックジャッキング")}}攻撃を防ぐために使用することができます。 -

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

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

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

+**Note:** {{HTTPHeader("Content-Security-Policy")}} ヘッダーに {{HTTPHeader("Content-Security-Policy/frame-ancestors", "frame-ancestors")}} ディレクティブがあり、対応しているブラウザーにおいてこのヘッダーを置き換えています。 -
-

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

-
- - - - - - - - - - + + + + + + + + + +
ヘッダー種別{{Glossary("Response header", "レスポンスヘッダー")}}
{{Glossary("Forbidden header name", "禁止ヘッダー名")}}いいえ
ヘッダー種別{{Glossary("Response header", "レスポンスヘッダー")}}
{{Glossary("Forbidden header name", "禁止ヘッダー名")}}いいえ
-

構文

+## 構文 -

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

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

ディレクティブ

+### ディレクティブ -

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

+`DENY` を指定した場合は、フレームにページを他のサイトから読み込もうとした時だけでなく、同じサイトから読み込もうとした時にも失敗します。一方、 `SAMEORIGIN` を指定した場合は、フレームの中のページを含むサイトが、ページを提供しているサイトと同じである限り、フレーム内でページを利用することができます。 -
-
DENY
-
サイト側の意図に関わらず、ページをフレーム内に表示することはできません。
-
SAMEORIGIN
-
ページは、ページ自体と同じオリジンのフレーム内でのみ表示されます。仕様書ではこのオプションを最上位、親、チェーン全体のどれに適用するかをブラウザーベンダーに任せていますが、すべての生成元が同じオリジンでない限り、利用価値がないと議論されています。 ({{bug(725490)}} を参照)。対応の詳細は{{anch("Browser compatibility", "ブラウザーの互換性")}}もご覧ください。
-
ALLOW-FROM uri (廃止)
-
これは廃止されたディレクティブであり、最近のブラウザーでは動作しません。使用しないでください。対応している古いブラウザーでは、ページは指定されたオリジン uri のフレーム内でのみ表示されます。なお、従来の Firefox では SAMEORIGIN と同じ問題がありました。 — フレームの生成元が同じオリジンであるかどうかをチェックしません。 {{HTTPHeader("Content-Security-Policy")}} ヘッダーには frame-ancestors ディレクティブがあり、代わりにこれを使用することができます。
-
+- `DENY` + - : ページをフレーム内に表示することは、それを試みているサイトが何であろうとできません。 +- `SAMEORIGIN` + - : ページは、ページ自体と同じオリジンのフレーム内でのみ表示されます。仕様書ではこのオプションを最上位、親、チェーン全体のどれに適用するかをブラウザーベンダーに任せていますが、すべての祖先が同じオリジンでない限り、利用価値がないと議論されています。 ({{bug(725490)}} を参照)。対応の詳細は{{anch("ブラウザーの互換性")}}もご覧ください。 +- `ALLOW-FROM uri` {{deprecated_inline}} + - : これは廃止されたディレクティブであり、最近のブラウザーでは動作しません。使用しないでください。対応している古いブラウザーでは、ページは指定されたオリジン _uri_ のフレーム内でのみ表示されます。なお、以前の Firefox では `SAMEORIGIN` と同じ問題がありました。 — フレームの祖先が同じオリジンであるかどうかをチェックしません。 {{HTTPHeader("Content-Security-Policy")}} ヘッダーには `frame-ancestors` ディレクティブがあり、代わりにこれを使用することができます。 -

+## 例 -
-

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

-
+> **Note:** X-Frame-Options を {{HTMLElement("meta")}} 要素に設定しても意味がありません。例えば、`` は効果がありません。使用しないでください。以下の例にあるように、 `X-Frame-Options` は HTTP ヘッダーを通じて設定された場合のみ動作します。 -

Apache の設定

+### Apache の設定 -

Apache で X-Frame-Options ヘッダをすべてのページで送信するように設定するには、サイトの設定に以下の記述を追加してください。

+Apache で X-Frame-Options ヘッダをすべてのページで送信するように設定するには、サイトの設定に以下の記述を追加してください。 -
Header always set X-Frame-Options "SAMEORIGIN"
-
+``` +Header always set X-Frame-Options "SAMEORIGIN" +``` -

Apache で X-Frame-Options を DENY に設定するには、サイトの設定に以下の記述を追加してください

+Apache で `X-Frame-Options` を DENY に設定するには、サイトの設定に以下の記述を追加してください -
Header set X-Frame-Options "DENY"
-
+``` +Header set X-Frame-Options "DENY" +``` -

nginx の設定

+### nginx の設定 -

nginx で X-Frame-Options ヘッダーを送信するように設定するには、以下の記述を http、server、 location のいずれかの設定に追加してください。

+nginx で `X-Frame-Options` ヘッダーを送信するように設定するには、以下の記述を http、server、 location のいずれかの設定に追加してください。 -
add_header X-Frame-Options SAMEORIGIN always;
-
+``` +add_header X-Frame-Options SAMEORIGIN always; +``` -

IIS の設定

+### IIS の設定 -

IIS で X-Frame-Options ヘッダーを送信するように設定するには、サイトの Web.config ファイルに以下の設定を追加してください。

+IIS で `X-Frame-Options` ヘッダーを送信するように設定するには、サイトの `Web.config` ファイルに以下の設定を追加してください。 -
<system.webServer>
+```html
+
   ...
 
-  <httpProtocol>
-    <customHeaders>
-      <add name="X-Frame-Options" value="SAMEORIGIN" />
-    </customHeaders>
-  </httpProtocol>
+  
+    
+      
+    
+  
 
   ...
-</system.webServer>
-
+ +``` -

HAProxy の設定

+または、IIS マネージャーのユーザーインターフェイスを使用してこの構成を設定する方法については、[マイクロソフトのサポート記事](https://support.office.com/en-us/article/Mitigating-framesniffing-with-the-X-Frame-Options-header-1911411b-b51e-49fd-9441-e8301dcdcd79)を参照してください。 -

HAProxy で X-Frame-Options ヘッダーを送信するように設定するには、以下の記述を front-end、listen、backend のいずれかの設定に追加してください。

+### HAProxy の設定 -
rspadd X-Frame-Options:\ SAMEORIGIN
-
+HAProxy で `X-Frame-Options` ヘッダーを送信するように設定するには、以下の記述を front-end、listen、backend のいずれかの設定に追加してください。 -

他にも、より新しいバージョンでは次のような設定ができます。

+``` +rspadd X-Frame-Options:\ SAMEORIGIN +``` -
http-response set-header X-Frame-Options SAMEORIGIN
-
+他にも、より新しいバージョンでは次のような設定ができます。 + +``` +http-response set-header X-Frame-Options SAMEORIGIN +```

Express の設定

-

Express で X-Frame-Options ヘッダーを送信するように設定するには、 helmet を使用して frameguard でヘッダーを設定します。以下の記述をサーバー設定に追加してください。

+Express で `X-Frame-Options` ヘッダーを送信するように設定するには、[helmet](https://helmetjs.github.io/) を使用して [frameguard](https://helmetjs.github.io/docs/frameguard/) でヘッダーを設定してください。以下の記述をサーバー設定に追加してください。 -
const helmet = require('helmet');
+```js
+const helmet = require('helmet');
 const app = express();
 app.use(helmet.frameguard({ action: 'SAMEORIGIN' }));
-
+``` -

他にも、直接 frameguard を使用することもできます。

+他にも、直接 frameguard を使用することもできます。 -
const frameguard = require('frameguard')
+```js
+const frameguard = require('frameguard')
 app.use(frameguard({ action: 'SAMEORIGIN' }))
-
- -

仕様書

- - - - - - - - - - - - - - -
仕様書題名
{{RFC("7034")}}HTTP Header Field X-Frame-Options
+``` + +## 仕様書 + +{{Specifications}} -

ブラウザーの互換性

+## ブラウザーの互換性 -

{{Compat("http.headers.X-Frame-Options")}}

+{{Compat}} -

関連情報

+## 関連情報 - +- {{HTTPHeader("Content-Security-Policy")}} の {{HTTPHeader("Content-Security-Policy/frame-ancestors", "frame-ancestors")}} ディレクティブ +- [HTTP Header Field X-Frame-Options - RFC 7034](https://datatracker.ietf.org/doc/html/rfc7034) +- [ClickJacking Defenses - IEBlog](https://docs.microsoft.com/en-us/archive/blogs/ie/ie8-security-part-vii-clickjacking-defenses) +- [Combating ClickJacking with X-Frame-Options - IEInternals](https://docs.microsoft.com/en-us/archive/blogs/ieinternals/combating-clickjacking-with-x-frame-options) -- cgit v1.2.3-54-g00ecf