[Hiki-dev:00952] 添付ファイル名のエスケープ

アーカイブの一覧に戻る

Kazuhiro NISHIYAMA zn****@mbf*****
2005年 7月 16日 (土) 12:09:02 JST


西山和広です。

添付ファイルを削除するためのチェックボックスのname属性の
ところにエスケープ漏れがあり「<>」がそのまま入ることが
ありました。
IRCでかずひこさんに伝えて、CVSでは既に直っています。

詳しく調べてみたところ、セキュリティ上の問題はないようです。


以下詳細です。

まずcgi.rbのファイル名を取り出す部分で
        /Content-Disposition:.* filename="?([^\";]*)"?/ni.match(head)
        filename = ($1 or "")
        if /Mac/ni.match(env_table['HTTP_USER_AGENT']) and
            /Mozilla/ni.match(env_table['HTTP_USER_AGENT']) and
            (not /MSIE/ni.match(env_table['HTTP_USER_AGENT']))
          filename = CGI::unescape(filename)
        end
となっていて、MacでMozillaかつMSIEではない時しか
「"」を含むファイル名のファイルを添付できません。

「"」を含むファイル名で添付しても、attach.cgiで保存される
ファイル名はescapeされて、「%22」に戻ります。

attach.rbのattach_show_page_files_checkboxで
      s << %Q! [<input type="checkbox" name="file_#{file_name}">#{attach_anchor(f)}] \n!
となっていて、ファイル名がそのまま使われてしまって
いましたが、「"」は「%22」になっていてname属性を
閉じることが出来ずに悪用は出来ないようです。


-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)



Hiki-dev メーリングリストの案内
アーカイブの一覧に戻る