謎の回答::詰めXSSに対して

匿名の方からメールが届きました。「最近の問題への回答ではないけれども面白いはず」ということでした。コードを拝見したところ約10分ぐらい頭がくらくらしました。以下のような感じです。多少修正しました。HTML4.01のトランザクショナルということでお願いします。もちろんvalidでないけれど。


<map>
<area id="mappy" href="javascript:alert(1)">
</area>
</map>
<script>
location=mappy
</script>

ええと、そのココロといたしまして。クライアントサイドのイメージマップのためのarea要素にidがついておりまして、これが"mappy"。area要素にはhref属性がついております。レガシーなDOMの見方でいくと、mappy.href が存在して内容が"javascript:alert(1)"であります。
さて script要素で、location=mappy としてやると、すなわち、location.href=mappy.href が自動的に実行されます。なので、alert(1)が起動されます。
Firefoxなどでは、HTMLの宣言によっては、レガシーなDOMの記述が意図した通りにはならず禁止されてしまいます。

作者さんのおっしゃる通り、これは詰めXSSの出題意図と相違していますが、なるほど、面白い見方だと思いました。ドットを使わないで済む方法として、記憶しておきたいと思います。残念ですが、出題のページの$userdata以外に第三者の出力が存在していますので、「詰めXSSとしては」落選とさせていただきたく思います。すばらしいアイデアのメールをありがとうございました。

IEで、HTML記述でid=document な要素の下に id=cookieな要素をぶらさげてみました。javascriptからdocument.cookieの読み出しができるのかなぁ?と。結果は!そしてさらにごちゃごちゃするには?…orz