touchイベントを利用した外部iframeの強制クリック方法 flying iframe(相手は死ぬ)ってのを考えてみた
少し前に透明のiframeをクリックさせるクリックジャッキングってセキュリティ問題が有名になったね。
要はユーザーに意図させずにログイン中の外部ページのボタンなどを押させるのが問題なわけだ。
で、iPhoneやAndroidやFirefoxの開発版はDOMのtouchイベントをサポートしていて、現在のiPhoneやAndroidの現在の実装だと、これを使ってユーザーに意図せずにiframe内をタップ(イベントとしてはclick)させることができるよ。
黄色いdivをタップするとiframeが飛んで来る!そしてiframe内のボタンをタップしてしまう!
座標の微調整をすれば、いろいろなサイトのボタンとかを押させることができるよ!
仕組みは簡単で、画面に触れた時点でtouchstartイベントが発火するんで、iframeをその場所に移動する。
そうすると、そのiframe内をタップしちゃうというわけ。
個人的には、clickのための押下対象を記憶するタイミングの問題のような気がしないでもないが、touchイベントの仕様読んでないからわかんないね。
まあたぶん既知だし誰かが直すだろう。