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)