現時点での自分のクリックジャッキングに関する認識
「なんか上にiframeとかで罠サイト被せて、利用者にクリックさせて勝手なことさせるやつでしょ?」(分かってる)
「iframe使わせんかったらいいじゃん?どうやるかあんまり分かってないけど」(分かってない)
「使いたい場合は…んー…」(全く分かってない)
実際問題、クリックジャッキング攻撃されるサイトってどんなの?
クリックだけでなんか大事な処理ができるサイトだったらなんでもやばいと。
ということは、
- マウスみたいなの(ポインティングデバイス)だけで大事な操作ができないようにする
- 外からiframeが入らないようにする
これで防げる、気はするのはなんとなくわかった。
具体的な対策方法
これの対策としてframeおよびiframeでの参照を制限するX-Frame-Optionsというものがあるそうで。
このX-Frame-Optionsというレスポンスヘッダは
- DENY(とにかく全部拒否)か
- SAMEORIGIN(同一生成元ならOK、Qiitaならqiita.comのiframeだけ読める)か
の2択らしい。
指定していない場合普通にiframeなんでも読み込んじゃうよう?(未調査)ですのでやばいですね
あとは
- 重要な操作の前にパスワード入力を要求する
とかも対策にはなりそうな。一般的なブラウザなら概ねX-Frame-Optionsは対応してるようなので、よっぽどマイナーなブラウザ使ってなきゃここまでしなくてもいいのかもしれない。ここまでするかどうかは、多分そのページで行う処理の重要度によるんだろうか
設定の仕方
サーバー側でもページ側でも設定できるらしいが、設定の仕方によっては二重出力されたり二段出力されたりするようで。
その結果DENYで設定したはずなのに特定のブラウザからだとSAMEORIGINになってたりとかするようです。
ページ側でやると抜け漏れ発生しそうなのでサーバー側で設定するのが安全なのかな。
別に全ページ出力しても問題ないようですし。
ただ同じサイトの中でiframeを使ったり使わなかったりする場合は個別設定したほうがいいと。
あとApacheだとmod_headersが導入されてないと設定ができないようなので、そうなったら必要なページ、あるいは全ページに入れておく感じになる感じかな。
その他事項
あれ、HTTPヘッダってめっちゃ大事じゃね???(今更)
近いうちに調べて自分なりにかみ砕きたい
徳丸本と各種Webサイトを見て回りながら自分なりの解釈を垂れ流してみましたが、いかんせんセキュリティに関して多分知見が足りなさすぎるので…
突っ込みどころとかがありましたらコメント等でご指導頂けますと幸いです。