【PHP脆弱性対策】クリックジャッキング攻撃への対応方法を紹介
セキュリティ対策には多くの対応が必要ですが、その一つにクリックジャッキング対策があります。
実は、以前組んだサイトでクリックジャッキング攻撃への不備が見つかりました。
そこで、今回はその不備に対する対応方法についての紹介です。
まず「クリックジャッキング攻撃とは何か?」についてですが、
仕組み自体は難しくないのでどなたでも直ぐに理解できる内容だと思います。
ですが、説明するとなるとデモ用のHTMLを用意したりと結構面倒なので、今回は止めておきます。
以下のサイトで説明されているので、そちらを確認してみて下さい。
https://noumenon-th.net/programming/2016/02/20/clickjacking/
こちらのブログでは、対応方法について紹介していきます。
と言っても、
・HTTPレスポンスヘッダに「X-FRAME-OPTIONS」を追加
↓
・外部サイトからフレームでのページの読み込みを制限
すれば、対応はOKです。
今回不備が見つかったサイトはPHPで組んでいるので、header()関数を使って設定します。
該当のスクリプトりに以下のようなコードを1行追加するだけです。
<?php header("X-FRAME-OPTIONS: DENY"); ?>
スクリプト毎に設定するのが面倒という場合には、
.htaccessに以下のような記述を追加する方法もあります。
Header set X-FRAME-OPTIONS "DENY"
もちろん、httpd.confで設定してもOKです。
因みに、以下のようなmetaタグを追加する方法もあるみたいです。
<meta http-equiv="X-FRAME-OPTIONS" content="DENY">
それと、
指定できるのは「DENY」だけではなく、「SAMEORIGIN」「ALLOW-FROM」も用意されています。
■DENY => フレームでのページの読み込みの一切を禁止
■SAMEORIGIN => フレーム内のページと同一サイトであれば、ページの読み込みが可
■ALLOW-FROM [URLを指定] => 指定したURL内でのみページの読み込みが可
という違いがあるようです。
原則「DENY」を指定しておいて、どうしてもフレームで読み込む必要があるページのみ、「SAMEORIGIN」や「ALLOW-FROM」を設定するといった仕様にしておいた方が、個人的には無難な対応に思います。
設定が完了したら、
一応HTTPのレスポンスヘッダを確認しておきましょう。
X-FRAME-OPTIONSが出力されていればOKです!!