Microsoft Internet Explorer Content-Disposition HTML File Handling Flaw

少々危険な香りがしますね。でもどうやら既知っぽい?あたりまえのような気もしてきましたが私の頭が腐れていますでしょうか…

応答ヘッダが

Content-Disposition: attachment; filename="file.htm"
Content-Length: 91
Keep-Alive: timeout=15, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=ISO-8859-1

となってきます。

IE では、Content-Type が text/html で、Content-Disposition が attachment だと、ダウンロードダイアログ(確認表示)となりますが、ここまではヨシとして。そのダイアログでは、開くと保存とキャンセルが選択可能。で、あえて開くを選択すると、IEは HTML として表示出きるのだけれども…

このとき、『元のドメインのままだからヤバイ』というのが、この PoC の作成者の意見でしょう。

Wikiなんかだと、何者かが勝手に添付したファイルへのリンクを、善意のユーザがクリックした時に、いったんダウンロード状態になって、ダイアログにおいてそのユーザが「開く」を選択すると、スクリプトが動いてしまう…これはちょっとどうなのか?というのが PoC 作成者の主張の中に含まれているのかなぁ?

PoC 作成者が言うことでは、Firefoxでは、Cookieが表示されない、これが正しい、ということを言っているけれど、Firefoxは、「開く」を選択すると、いったんダウンロードが終了してローカルに保存されたものを「開」いているのであって、ドメインがそもそも元のWeb上のものと違いますよね、Cookieが読めないのは当然。で、IEでも同じようにしなくてはいけないという主張なのかなぁ?

こういうブラウザの実装面の差異は微妙で、RFCにも規定されていないのではないかな?

…私の意見では、Content-Disposition が attachment なら、「開く」というダイアログ上の選択枝は不要ではないかと。しっかり「保存」と「キャンセル」だけあれば良いような気がします。

XPsp2では、ローカルデスクトップ上の HTML を、IEが開くと、ロックダウンが働いて、スクリプトが動かないことが期待されるのですが、他のWindowsもまだまだありますしねぇ、なんやら危険なものが動いてしまうかもしれませんし。いっそ現状通り、インターネットゾーンの権限で動いていただいたほうが安心なのかなぁ?考えすぎでしょうかね、そうですね、きっと。

ちなみに Opera8.54(7730) で試したらなんだか不思議なことになりました。