File upload CFFILE action=";上传“;当accept=”时允许批处理文件;“纯文本/纯文本”;

File upload CFFILE action=";上传“;当accept=”时允许批处理文件;“纯文本/纯文本”;,file-upload,coldfusion,mime-types,File Upload,Coldfusion,Mime Types,从ColdFusion 9升级到ColdFusion 2016时,我们允许用户上载用于阻止.bat文件、.cert文件等的文件,但在ColdFusion 2016中,相同的代码允许上载这些文件 ColdFusion 10中的cffile action=“upload”有几处更改 它如何处理允许的文件类型 ColdFusion 10中的另一个新特性是strict属性,默认为 对 如果strict设置为true,则在 文件上传发生;但是,这意味着ACCEPT必须是 mime类型,而不是文件扩展名

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

ColdFusion 10中的cffile action=“upload”有几处更改 它如何处理允许的文件类型

ColdFusion 10中的另一个新特性是strict属性,默认为 对

如果strict设置为true,则在 文件上传发生;但是,这意味着ACCEPT必须是 mime类型,而不是文件扩展名


无论我是否明确地将strict设置为true,
.bat
文件仍在ColdFusion 2016中上载

是否存在已更改的ColdFusion管理员特定设置,或者我可以修改该设置以禁止使用那些不需要的文件类型?

使用“严格”时,不检查文件扩展名。成功上传后,您需要根据文件扩展名添加一个单独的例程来阻止。在过去,我遇到过不同/不正确的mimetype阻止上传有效内容的问题。(有时Mac/Safari用户会使用正确但与配置不同的mime类型上传文件。)


我们还为文件上传添加了一个例程,用于从文件名中删除Mac用户可能添加的非法或非标准字符

对于图像,我们还将所有JPEG文件重命名为JPG。我们还使用GraphicsMagick(命令行;比CFImage快,具有更广泛的图像兼容性)将JPG颜色空间重置为RGB。(ColdFusion图像和PDF生成功能最适合这种类型的图像,并且在尝试读取图像时不会抛出错误。)

使用“严格”时,不检查文件扩展名。成功上传后,您需要根据文件扩展名添加一个单独的例程来阻止。在过去,我遇到过不同/不正确的mimetype阻止上传有效内容的问题。(有时Mac/Safari用户会使用正确但与配置不同的mime类型上传文件。)


我们还为文件上传添加了一个例程,用于从文件名中删除Mac用户可能添加的非法或非标准字符


对于图像,我们还将所有JPEG文件重命名为JPG。我们还使用GraphicsMagick(命令行;比CFImage快,具有更广泛的图像兼容性)将JPG颜色空间重置为RGB。(ColdFusion image&PDF生成功能最适合这种类型的图像,并且在尝试读取图像时不会抛出错误。)

您可能可以在这个问题上提供一些帮助,除了添加单独的例程之外,没有其他方法吗?ColdFusion 9的遗留代码可以正常工作,但ColdFusion 2016中的相同代码允许批处理文件以
纯文本的形式传递。这就是为什么我认为ColdFusion管理中可能有一个配置来处理这个问题。CF9使用JRun,CF10/11/2016使用TomCat。在行为上有很多未记录的变化。。。有些是错误修复,有些是“需要修复的错误”。BAT文件仍然是具有“text/plain”mimetype的合法文件。以下是Peter Freitag提供的一些好的上传提示:@DanBracuk我看了这个问题。海报中没有包含CF、OS或示例CFFILE代码的版本。一旦提供了更多的信息,我可以尝试复制它(如果我有权访问相同的配置)。您可能可以在这个问题上提供一些帮助,除了添加一个单独的例程之外,没有其他方法吗?ColdFusion 9的遗留代码可以正常工作,但ColdFusion 2016中的相同代码允许批处理文件以
纯文本的形式传递。这就是为什么我认为ColdFusion管理中可能有一个配置来处理这个问题。CF9使用JRun,CF10/11/2016使用TomCat。在行为上有很多未记录的变化。。。有些是错误修复,有些是“需要修复的错误”。BAT文件仍然是具有“text/plain”mimetype的合法文件。以下是Peter Freitag提供的一些好的上传提示:@DanBracuk我看了这个问题。海报中没有包含CF、OS或示例CFFILE代码的版本。一旦提供了更多信息,我可以尝试复制它(如果我有权访问相同的配置)。AFAIK
.bat
是一个
text/plain
文件。AFAIK
.bat
是一个
text/plain
文件。
<cffile action="UPLOAD" filefield="form.filename" 
    destination="#change_path#" accept="text/plain" strict="true">
<CFIF ListFindNoCase("bat", CFFile.serverFileExt)>
    <!--- delete file, throw error, display message, etc --->
<CFELSEIF CFFile.serverFileExt IS "JPEG">
    <!--- rename file to JPG --->
</CFIF>