web-dev-qa-db-ja.com

X-Frame-Optionsヘッダーを単純なHTMLファイルに追加する方法

追加できませんX-Frame-Optionsヘッダーを単純なHTMLファイルに追加します。

JavaScriptを使用してそれを行う方法はありますか?

6
sam

X-Frame-Optionsヘッダーは、クライアントではなくサーバー側に追加されます。これは、ヘッダーを使用して、ブラウザーがページをレンダリングする方法を制御するためです。

ファイルをホストしているサーバーが何であれ、このヘッダーを追加する必要があります。

15
Dan Landberg

X-Frame-OptionsはHTTPヘッダーです。そのため、HTMLの一部ではなく、HTMLドキュメント内に設定することはできません。

これがHTTPヘッダーのみである理由の1つは、クライアントがドキュメントをフレームに埋め込むことが許可されているかどうかを判断できるようにする必要があることですbefore HTMLコードの解析。

したがって、ファイルを編集してそれを実現することはできませんが、サーバーのHTTP応答を変更する必要があります。通常、これは、Webサーバーソフトウェアまたはサーバー側の言語によって提供される設定で行われます。

たとえば、Apacheの設定は次のようになります。

Header always append X-Frame-Options DENY

または、PHPでは、次のようにヘッダーを設定できます。

<?php header('X-Frame-Options: DENY'); ?>

より新しい [〜#〜] csp [〜#〜] と同等であることに注意してください frame-ancestors 。ただし、一部のCSPポリシーは<meta>タグ、それはここでは不可能です。これは動作しません

<head>
  <!-- This does *not* work! -->
  <meta http-equiv="Content-Security-Policy" content="frame-ancestors 'none'">
</head>

XFOヘッダーを設定する以外のクリックジャッキング防御策の概要については、 クリックジャッキング防御チートシート も参照してください。

28
Arminius

コメントでIISはお使いのWebサーバーですが、そうです、これをWebサーバー自体に設定する方法があります。

他の回答のいくつかは、これをweb.configに追加することについて言及しています。これは、ASP.NETアプリケーションの場合はすばらしいオプションですが、IISから提供されるany Webアプリケーションで機能する別の方法があります。テクノロジーに関係なく。

Internet Information Services (IIS) Managerを開き、ナビゲーションペインのSitesの下のノードを展開してサイトを強調表示すると、[機能ビュー]ペインのIIS機能グループの下に、 HTTP Response Headersという名前の機能。このノードを開くと、右側のActionsペインにヘッダーを追加するアクションが表示されます。ヘッダーにX-Frame-Optionsの名前と希望する値を追加するだけで、IISによってそのサイトから提供されるすべての応答に追加されます。

0
Xander