クリックジャッキングというのが話題になってるみたい。
全ての人にとって有効な防御策がなかなか見あたらないみたいで
おそろしいですね。
せめて自分が運営しているサイトが
その対象にならないようにしたいところ。
というわけで
こういう JavaScript を仕込んでおいてはどうかと思います。
添削歓迎。
→ご指摘いただいて書き換えました。
if (window.top !== window.self) { window.top.location = window.self.location; }
HTML 内に <script> タグで入れても
外部 JavaScript ファイルでもいいけど、
ともかくこういうことをしておくと
そのサイトが読み込まれたフレームと親フレームが一致しない場合、
要するに勝手にフレームで呼び出されている場合、
親フレーム(=クリックジャッカーのサイト)を乗っ取ることができる。
はず。
もちろんユーザーが JavaScript をオフにしていたら
まったく機能しないから
完全防備はできない。
が、攻撃対象に選ぶとしたら
より多くの人をひっかけられるサイトだろうから
攻撃者はよそに行ってくれるだろう、という逃げ方。
自転車に鍵を2つかけるようなもんか。
しかも攻撃者のブラウザでこれが作動せず
これが仕込まれていることに気づかないまま
クリックジャッキングを仕掛けてくれたら、
攻撃者のサイトを逆に乗っ取ることができるかもしれない。
何かもっと賢い方法あったら教えてください。
2009/03/05 14:45
そのような言葉をこちらで初めて知りました。
勉強になります。
2009/03/05 17:36
top.location.href = “(ここに自サイトの URL)”;
は同一生成元ポリシーに反するのでセキュリティエラーになります。フレーム内に読み込まれたかどうかをチェックするのであれば、twitter.comが行っているように
window.top !== window.self
とすべきです。
また、IE8のクリックジャッキング対策を有効にする為、HTTPヘッダで
X-FRAME-OPTIONS: SAMEORIGIN
としておくのも良いと思います。
2009/03/05 18:07
> 同一生成元ポリシーに反する
あれ、これは親フレームのドキュメントに対して DOM 操作をしているわけではないのでOKと解釈してるんですが。
実際エラーが出ずに動作します。どうなんだろ。
チェックの件は、
window.top !== window.self
でいいですね。書き換えました。ありがとうございました。