CFFILE动作="上传"允许批处理文件在accept =" text / plain"

时间:2017-09-29 15:10:55

标签: file-upload coldfusion mime-types

从ColdFusion 9升级到ColdFusion 2016时,我们允许用户上传用于阻止.bat文件,.cert文件等的文件,但在ColdFusion 2016中,相同的代码允许这些要上传的文件。

  

cffile action有几处变化="上传"在ColdFusion 10中   关于它如何处理允许的文件类型。

     

ColdFusion 10中的新功能是默认属性   真。

     

如果将strict设置为true,则在检查时检查文件的mime类型   发生文件上传;但是,这意味着ACCEPT必须是一个列表   mime类型而不是文件扩展名。

Source

<cffile action="UPLOAD" filefield="form.filename" 
    destination="#change_path#" accept="text/plain" strict="true">

无论我是否明确将strict设置为true,.bat文件仍会在ColdFusion 2016上传。

是否存在已更改的ColdFusion Administrator特定设置或我可以修改以禁止这些不需要的文件类型?

1 个答案:

答案 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生成功能最适合此类图像,并且在尝试读取图像时不会抛出错误。)