Kazuhiko
kazuh****@fdiar*****
2005年 5月 21日 (土) 18:58:42 JST
かずひこです。 At Sat, 21 May 2005 18:40:29 +0900, Kazuhiko wrote: > → http://www.namaraii.com/hiki/?advisory20050519 | Hiki 0.6.6 ならびに Hiki 0.8.0 preview1 では、添付ファイルへのリンクに | 対して 'Content-Disposition: attachment' というヘッダを付加して、ブラウ | ザに対して添付ファイルを Content-Type の如何にかかわらずダウンロードさ | せるようにすることで、この問題に対処しました。 この件は、 * HTML の添付ファイルをブラウザに表示させると危険 (ログインに使うクッキー と同じドメインとパスだから) * Content-Type を無視して中身を見て HTML と判定するブラウザ (Internet Explorer のおそらく全バージョンのデフォルト) がいるので、Content-Type が text/html でなければ済むわけではない というのが問題の要点です。 しかし、<a href="..."> なリンクに対して「中身が画像」なものまで強制ダウン ロードさせるのは、やや不便です。 そこで、CVS HEAD では image_size ライブラリ <http://raa.ruby-lang.org/project/image_size/> を用いて image/* と判定さ れたファイルに関しては、attachment のかわりに inline にするように変更しま した。これにより、画像に対する attach_download でブラウザ上で表示すること ができるようになりました。なお、image_size ライブラリで「画像ではない」と 判定されたファイルは、すべて application/octet-stream として扱われます。 この変更に際し、オリジナルの image_size ライブラリに若干変更を加えました ので、ここに記しておきます。 * 先頭 128 バイトで判定しているのを 256 バイトに増やした * 先頭 256 バイトが /<script\b/ にマッチすれば無条件に非画像とした ただし、この 256 バイトというのに明確な根拠はありません。 <http://tdiary.ishinao.net/20050520.html#p02> を参考に、「おそらく先頭の 256 バイトしかみていないであろう」という推測にもとづくものです。 お気付きの点などあればお知らせください。よろしくお願いします。 -- かずひこ <http://wiki.fdiary.net/kazuhiko/> 「恋とハックはアジャイルが命!」