意外な盲点。

しかし、

クリックジャック - 素人がプログラミングを勉強するブログ
FirefoxユーザはNoScriptを使うか、about:configからpermissions.default.subdocumentを3にしましょう。

というのはあまりに厳しく悲しい。対策しようは果たしてないのでしょうか?

その結果が、こちら。

  • clickUnJack

このブックマークレットで、クリックジャックを殺せます。「クリックジャッキングってこうですか? わかりません」の例はもちろん、より深刻そうな「クリックジャック - 素人がプログラミングを勉強するブログ」で指摘された例にも有効です。IE7, Firefox 3, Safari 3/4, Opera, Chromeで動作確認済みです。

以下の実例で試してみてください。

一見何の変哲もなさそうなページだが、罠が隠されている。

で、実装はこちら。

clickunjack.js

要は、position:absoluteなiframeを拾って削除しているわけです。

実は、クリックジャック攻撃にとってより本質的なのは、iframeが透明であることよりも、他のDOM Elementの上にかぶさっていることです。そのためには、position:absoluteが必要で、逆にこういう目的以外でiframeをposition:absoluteとする必然性はまずないはずです。誤爆の可能性はゼロではありませんが、かなり低いでしょう。仮に誤爆したとしても、ページをリロードすればよいのですし。

Dan the JavaScripter

追記:

はてなブックマーク - Hamachiya2のブックマーク
absoluteじゃなくてもできるよ。 relative, fixed … たぶんうまくすれば float でも。

どうせなら、position:static以外なiframe全て対象にすればいいと気がついたのでclickunjack.jsを更新。

にも対応済み。しかし、

いや、それすらなくても攻撃成立しそう。 iframeがだめなら、iframe以外をabsoluteすればいいじゃない…と。

まで対象にしてしまうと、さすがに誤爆率が高くなってしまう。