MSIE はファイルの内容を解析する
2006年3月27日(月曜日)
MSIE はファイルの内容を解析する
今日の腕試し! Webブラウザはコンテンツの種類をどう見分けている? (itpro.nikkeibp.co.jp)
(1)Webブラウザが受信ファイルの内容を解析して見分けている
(2)HTTPレスポンスの「Content-Type」ヘッダーに指定された情報に基づき見分けている
(3)HTTPリクエストの「Cookie」ヘッダーに指定された推定しづらい長さの文字列に基づき見分けている
仕様的には(2)が正解であるべきなのですが、それだけで済めば苦労はないですね。XP SP2 の IE6 からは、セキュリティの設定で「拡張子ではなく、内容によってファィルを開くこと」を無効にできるようになりましたが、デフォルトでは有効ですからファイルの内容解析が優先されてしまいます。
このあたりをちゃんと理解していないと、「image/jpegなのにXSS」という悲劇が起きたりしますので危険です。過去に実際にあったケースしては、
- ユーザが任意の画像を添付できるサービス
- 通常は HTML は添付できない
- スクリプトを含む HTML を無理矢理 Content-Type: image/jpeg にして送信すると添付できる
- その添付ファイルは当然 Content-Type: image/jpeg になっている
- しかし、デフォルト設定の IE ではスクリプトが実行されて轟沈
というものがありました。image/jpeg なんだから大丈夫だろうと思っていても、デフォルト設定の IE のユーザは見事に喰らってしまうわけです。
ちなみに問題回答後の解説によると、
(1)の方法は理論的に可能ですが,現実的ではありません。なぜなら,いちいち受信ファイルの内容を解析していては処理に時間がかかります。それに,新しいファイル形式に対応するたびにWebブラウザをバージョンアップしなければならないので,拡張性に欠けてしまいます。
ということで、MSIE は現実を超越しているようです。mod_mime_magic の立場もなかなか微妙ですね。
- 「MSIE はファイルの内容を解析する」にコメントを書く
関連する話題: Web / セキュリティ / ITpro / Internet Explorer
- 前(古い): 魔洞戦紀
- 次(新しい): .NET Framework 2.0 にしよう