ポップアップ・ウィンドウの乗っ取り

この日記の11月28日、ポップアップエンドランで記載したコードの一部を以下に。

<script type="text/javascript">
<!-- Begin
function popUp(targetURL,popupURL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(popupURL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=300,height=200,left = 250,top = 200');");
location.href=targetURL;
}
// End -->
</script>

ポップアップするウィンドウtargetを動的に生成しています。なんだか恐ろしいまでの予兆を11月28日に書いていたのですね・・・。

セキュリティーホールmemo|Secunia Research 08/12/2004 - Multiple Browsers Window Injection Vulnerability - |によれば、ポップアップウィンドウ名 (window.open の第 2 引数) が既知の場合、そのポップアップウィンドウを乗っ取ることが可能とのこと。参照記事は以下。

変なのぉ。表示|ソースがきかへん。

ハードディスクの中をお掃除していたら覚えがない変なファイルが2個(汗)。いえ、脆弱性やらセキュリティーやらのお話しではありません。IE6のお話しではあるのですけれど。

まず、1個目のファイル。c:\text.txt というもの。プレーンテキストで以下のように書いてあります。

<script>alert()</script>

次に2個めのファイル。マイドキュメントにあったのをデスクトップに移して中身をエディタで開いて見ました。あ、ファイル名は、text.htm 。中身は次の通り。

<SCRIPT defer> 
b=GetObject("c:/text.txt","htmlfile"); 
setTimeout("document.write(b.body.innerText);",5000); 
</SCRIPT> 

wait 5 min.

で、ローカルにあるtext.htmをIEで開いたら、alert()してしまいました(汗)。で、ソースを見たら、text.htmではなくて、text.txtのソースが見れたという。。。一瞬悩みました。きっと昔昔、誰かが私にjavascriptを教えてくれた時にサンプルにしたのかなぁと思うのですがぜんぜん覚えがありません。それに、このコードの意味するところもわかりません。

そうそう、もちろん、ゾーンが違うのでサーバ上のtext.htmから、c:\text.txtはアクセスできません。