http://sla.ckers.org/forum/read.php?2,13283,13283
のスレッドを読みました。
frame(iframe)のURLが、よそのドメインのページ内のJavaScriptから書き換えられてしまうという問題について書かれています。
例えば、被害サイト(victim.com)に以下のようなiframeを使用したページがあるとします。
<!-- http://www.victim.com/foo.html --> <body> ・・・ <iframe src="framepage.html"></iframe>
攻撃者は、攻撃サイト(evil.com)に以下のようなページを用意し、そこにユーザを誘導します。
<!-- http://www.evil.com/ --> ・・・ <script> function popup() { var x=window.open('http://www.victim.com/foo.html'); setTimeout('x.frames[0].location.href="http://www.google.com/"', 2000); } </script> <a onclick="popup()">click here</a>
このページのJavaScriptは、別のウィンドウにvictim.comのページを開き、さらにそのページ内のiframeのURLを差し替えるという処理を行ないます。
victim.comのページの一部(iframe部分)が、第三者によって任意の内容にすりかえられてしまうわけで、フィッシングに利用される恐れがあります。
この問題について、過去にどこかで聞いた記憶があったので、少し調べてたところ、以下の情報が見つかりました。
やはり、これは新しい問題ではなく、2004年頃にいくつかのブラウザで「frame injection」という名称で指摘されているものでした。さらに、初めて指摘されたのは1998年だそうで、相当古くからある問題です。
私はよく知らなかったのですが、IE6の最新バージョンでもこの攻撃が可能なようです。インターネットオプションのセキュリティ設定で、「異なるドメイン間のサブフレームの移動」を「無効」にすれば回避できるようですが、デフォルトでは「有効」になっているそうで*1。
IE7やFirefox1.05以降では、この問題は解消されているようです。