从ColdFusion 9升级到ColdFusion 2016时,我们允许用户上传用于阻止.bat
文件,.cert
文件等的文件,但在ColdFusion 2016中,相同的代码允许这些要上传的文件。
cffile action有几处变化="上传"在ColdFusion 10中 关于它如何处理允许的文件类型。
ColdFusion 10中的新功能是默认属性 真。
如果将strict设置为true,则在检查时检查文件的mime类型 发生文件上传;但是,这意味着ACCEPT必须是一个列表 mime类型而不是文件扩展名。
<cffile action="UPLOAD" filefield="form.filename"
destination="#change_path#" accept="text/plain" strict="true">
无论我是否明确将strict设置为true,.bat
文件仍会在ColdFusion 2016上传。
是否存在已更改的ColdFusion Administrator特定设置或我可以修改以禁止这些不需要的文件类型?
答案 0 :(得分:0)
当&#34;严格&#34;使用时,不检查文件扩展名。成功上传后,您需要根据文件扩展名添加单独的例程来阻止。在过去,我遇到了不同/不正确的mimetypes阻止有效内容上传的问题。 (有时Mac / Safari用户会使用正确但不同的mime类型上传文件。)
<CFIF ListFindNoCase("bat", CFFile.serverFileExt)>
<!--- delete file, throw error, display message, etc --->
<CFELSEIF CFFile.serverFileExt IS "JPEG">
<!--- rename file to JPG --->
</CFIF>
我们还添加了一个例程来上传文件,以便从Mac用户可能添加的文件名中删除非法或非标准字符。
说到图像,我们还将任何JPEG文件重命名为JPG。我们还使用GraphicsMagick(命令行;比CFImage更快/更广泛的图像兼容性)将JPG色彩空间重置为RGB。 (ColdFusion图像和PDF生成功能最适合此类图像,并且在尝试读取图像时不会抛出错误。)