Firefox3で「サードパーティのCookieも保存する」をオフにする。
防げる。
いずれのブラウザにもサードパーティ製のcookieを制限するオプションがあるが、Firefox3以外だと、フレーム内表示された場合に「新規にcookieを保存しない」だけで保存済みのcookieは送信してしまう。
軽く調べてみたところ、次のようになった。(間違ってたら教えてください)
サードパーティのcookieの新規保存 | サードパーティの保存済みcookieの送信 | 表示中のドメインのcookieの保存/送信 | |
---|---|---|---|
IE6,7,8(デフォルト) | x | o | o |
IE6,7,8(セキュリティ高) | x | x | x |
Opera9.6(デフォルト) | o | o | o |
Opera9.6(制限) | x | △ | o |
Safari(制限/デフォルト) | x | o | o |
Safari(全て受け入れる) | o | o | o |
Firefox2(デフォルト) | o | o | o |
Firefox2(ブロック) | x | x | x |
Firefox3(デフォルト) | o | o | o |
Firefox3(制限) | x | x | o |
oは送られた。xは送られなかった。Operaが△なのは画面遷移したら、cookieが送られてしまったため。
個人的な見解だけれども、ブラウザはアドレスバーに表示されているドメイン以外へのcookieの送信を(ユーザーが明示的に許可しない限り)やめるべきだし、それが適切なデフォルトだと思う。サイト側のJavaScriptでフレーム拒否とか、JavaScript有効になってる前提だし、(現実的な対策ではあるけれども)本質的な対策ではないでしょう。外部ドメインへのcookieの送信が無効であれば、クリックジャッキングで可能な攻撃は大幅に制限される。認証が不要な掲示板に自動で犯行予告を投稿させてIPアドレスをログに残させるぐらいだ。(それはクリックジャッキングを使わなくても出来る)
サードパーティへのcookieの送信が制限されても、外部サイトへのcookieの送信を前提としているサービス*1が使えなくなるぐらいだ。フレーム禁止しないと、本物のサイトに攻撃者のサイトを重ね合わせる手法が防げないけれど、それに引っかかる人間は元々フィッシング詐欺に引っかかる。*2
X-FRAME-OPTIONSのような、サイト側からの意思表示が出来る仕組みを作るのであれば「外部サイトに埋め込まれた場合は決してcookieを送信しないでください」があってもいいんじゃないかなあ、と思います。