クリックジャッキングとは
クリックジャッキングは、不可視または別の要素に偽装された Web ページ要素をクリックするようにユーザーを騙す攻撃です。これにより、ユーザーは無意識のうちにマルウェアをダウンロードしたり、悪意のある Web ページにアクセスしたり、資格情報や機密情報を提供したり、送金したり、オンラインで製品を購入したりする可能性があります。
通常、クリックジャッキングは、ユーザーに表示されるページに、iframe 内の非表示のページを表示することによって実行されます。ユーザーは、表示されているページをクリックしていると思い込んでいますが、実際には、その上に配置された非表示のページの要素をクリックしています。
クリックジャッキングに対する対策
クリックジャッキングから防御するための効果的な方法として X-Frame-Options 応答ヘッダーを活用した対策をご検討ください。
X-Frame-Options 応答ヘッダーは、Web ページの HTTP 応答の一部として渡され、ブラウザーが <FRAME> または <IFRAME> タグ内のページをレンダリングできるかどうかを示します。
X-Frame-Options ヘッダーに使用できる値は 3 つあります。
値 | 内容 |
DENY
| どのドメインもこのページをフレーム内に表示することを許可しません
|
SAMEORIGIN
| 現在のページを別のページのフレームに表示できますが、現在のドメイン内でのみ可能です
|
ALLOW-FROM URI
| 現在のページをフレームに表示することを許可しますが、特定の URI でのみ表示できます。例 www.example.com/frame
|
レスポンスヘッダーの送信はApacheやNginxなどのWeb・プロキシサーバ、PHPやPythonなどの言語で記述して送信することができます。
様々な方法でレスポンスヘッダーを送信することができますので、どのリクエストに対しても対応したい場合はApacheやnginxまたはロードバランサーなどの設定で送信するように検討すると管理や実装が容易になります。環境にあわせて適切な方法を選択してください。
Apacheでレスポンスヘッダーを返す方法
X-Frame-Options の設定はapacheのconf ファイルに記述する事で設定できます。環境にもよりますが、設定を記述しているファイルhttpd.conf などに記述してください。

Header append X-Frame-Options SAMEORIGIN
PHPのヘッダー間巣で返す方法
以下のようにheader関数に送信したいヘッダーをセットすることで返すことができます。

<?php header("X-Frame-Options: DENY"); ?>
Nginxでレスポンスヘッダーを返す方法
nginxの設定ファイルにadd_headerを利用することで設定することができます。

add_header X-Frame-Options SAMEORIGIN;