風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

たとえばこんなクリックジャック

はてなダイアリーやプロフィール上からクリックジャック!


はてなダイアリーやプロフィール上にも、1クリックではてなブックマークされてしまうトラップが仕掛けられる例→プロフィール上にしかけてあるのを参照*1

やってることは、

クリックジャッキングってこうですか? わかりません

と同じではあるんですが……。

実はこれ…

404 Blog Not Found:javascript - クリックジャック殺しなbookmarklet

では、殺せません。


また、

そろそろクリックジャッキングについて一言いっておくか - 最速転職研究会

で書かれている、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を送ってしまう模様。

このケースの場合

現状で有効なのは、

  1. 被攻撃サイト側(この場合、はてなブックマーク)もしくはユーザスクリプトで、

    クリックジャッキング対策 - IT戦記

    で書かれているような対策を入れておく*2


  2. 404 Blog Not Found:javascript - クリックジャック殺しなbookmarkletと同等の機能をフレーム内のwindowにも適応出来るようなユーザスクリプトを入れておく*3

  3. NoScriptで『ClearClick保護を行う』を有効にしておく(このとき、『□信頼しているページ』のチェックははずさないこと!)

  4. スクリプト(JavaScript)を無効にしておく*4

  5. 【追記】

    クリックジャッキングの本質的な解決策 - IT戦記

    のように、ユーザスタイルシートで透過を無効化&IFRAMEの大きさを制限する設定を入れておく。


とか、かなぁ…。


いずれにしろ、現実的な対策として、1.についてはいれておいてもいいんじゃないですかね?>はてなブックマークとか。

*1:この記事にも貼付けていましたが、スクロールがおかしくなる(はてなブックマークレットの仕様で、自身が見える位置までスクロールしようとするらしい)ので消しました

*2:もちろんIE用等の処理も追加するべきですが。

*3:AutoPagerizeの継ぎ足しなんかも考慮して、documentのonmousemoveやonmouseoverをトラップし、対象がiframeだったらチェックという作りにすべきでしょうね。

*4:本来、クリックジャックはスクリプトオフでも発生してしまうのがやっかいですが、上記ケースの場合はIFRAMEをスクリプトで挿入しているので……。もっとも、いろんなケースを考えると、現時点でのユーザ側の防御策としては、NoScript使うのが一番いいのですかねぇ。