はてなダイアリーやプロフィール上からクリックジャック!
はてなダイアリーやプロフィール上にも、1クリックではてなブックマークされてしまうトラップが仕掛けられる例→プロフィール上にしかけてあるのを参照*1。
と同じではあるんですが……。
実はこれ…
では、殺せません。
また、
で書かれている、Firefox 3で『□サードパーティの Cookie も保存する(P)』オプションを外してもだめです。
なぜかというと
になっているから。
window(top):はてなダイアリー(.hatena.ne.jp)
└ IFRAME(position:static):Googleガジェット(.gmodules.com)
└ IFRAME(position:absolute):はてなブックマークの追加フォーム(.hatena.ne.jp)
少なくとも、現時点(3.0.7)のFirefoxは、topと同一ドメインのIFRAMEには(間に外部ドメインのIFRAMEが挟まっていたとしても)Cookieを送ってしまう模様。
このケースの場合
現状で有効なのは、
- 被攻撃サイト側(この場合、はてなブックマーク)もしくはユーザスクリプトで、
で書かれているような対策を入れておく*2。
- 404 Blog Not Found:javascript - クリックジャック殺しなbookmarkletと同等の機能をフレーム内のwindowにも適応出来るようなユーザスクリプトを入れておく*3。
- NoScriptで『ClearClick保護を行う』を有効にしておく(このとき、『□信頼しているページ』のチェックははずさないこと!)
- スクリプト(JavaScript)を無効にしておく*4。
- 【追記】
のように、ユーザスタイルシートで透過を無効化&IFRAMEの大きさを制限する設定を入れておく。
いずれにしろ、現実的な対策として、1.についてはいれておいてもいいんじゃないですかね?>はてなブックマークとか。
*1:この記事にも貼付けていましたが、スクロールがおかしくなる(はてなブックマークレットの仕様で、自身が見える位置までスクロールしようとするらしい)ので消しました
*2:もちろんIE用等の処理も追加するべきですが。
*3:AutoPagerizeの継ぎ足しなんかも考慮して、documentのonmousemoveやonmouseoverをトラップし、対象がiframeだったらチェックという作りにすべきでしょうね。
*4:本来、クリックジャックはスクリプトオフでも発生してしまうのがやっかいですが、上記ケースの場合はIFRAMEをスクリプトで挿入しているので……。もっとも、いろんなケースを考えると、現時点でのユーザ側の防御策としては、NoScript使うのが一番いいのですかねぇ。