Kenichi Maehashi's Blog
脳内コアダンプ

FreeStyle Wiki で、一部の日本語の名前を持つ添付ファイルがダウンロードできない問題を解決するパッチ
Friday | February 13, 2009
======================================================
lib/Util.pm#make_content_disposition
- my $encoded = ($ua =~ /MSIE/ ? &Jcode::convert($filename, 'sjis') : Jcode->new($filename)->mime_encode(''));
+ my $encoded = ($ua =~ /MSIE/ ? &Jcode::convert($filename, 'sjis') : &Jcode::convert($filename, 'utf8'));
+ $encoded =~ tr/\r\n//;
======================================================

おそらく MIME ヘッダの folding の問題で、Apache が不正ヘッダ扱いしてくれちゃうんですよね。
WEB+DB PRESS Vol.48 を参考に、IE の場合は raw Shift_JIS、それ以外の場合は raw UTF-8 にしました。

日本語ロケール以外の Windows で動作する Internet Explorer や、Safari for Mac / Windows では正しく動作しないと思われます。
動作確認は日本語版 Windows XP 上の Internet Explorer 6, Firefox 2, および Opera 9.2、日本語版 Windows Vista 上の Internet Explorer 7 および Firefox 3 で行いました。
WEB+DB によれば Google Chrome についても生 UTF-8 で大丈夫なようです。

確認した限りでは、FreeStyle Wiki ではファイル名に改行コードを含むファイルを添付することはできないようになっているようでしたが、一応安全のため
$encoded =~ tr/\r\n//;
としておきました。
(cf. HTTP Response Splitting, HTTP Header Injection)

(追記)タイトルが不正確だったので訂正。すべての日本語添付ファイルが影響を受けるわけではありません。
コメント (0)
コメント


<< 前ページ[1]

トップページに戻る
Copyright © 2006-2021 Kenichi Maehashi, All Rights Reserved.