我已经为我的客户创建了一个文件上传,我正在努力使事情尽可能安全。我正在使用以下代码来处理文件上传。想法是重命名文件并将其写入 Web 根目录之外的文件夹。
问题是,在“写入”过程中,ColdFusion 是否有可能在将文件写入文件夹并使用以下代码重命名之前允许执行恶意文件?
这是我组件的顶部...
<cfset destdir = "/folder/upload/">
这是处理文件的代码的一部分......
<cfset var local = structNew()>
<cfset local.response = structNew()>
<cfset local.response['catcher'] = ''>
<cfset local.filename = listGetAt(#arguments.file#, 1, ".")>
<cfset local.fileext = ListLast(#arguments.file#, ".")>
<cfset local.nfile = #CreateUUID()# & "." & #local.fileext#>
<cftry>
<cffile action="write" file="#destdir##local.nfile#" output="#arguments.content#">
<cfset local.response['newfilename'] = local.nfile>
<cfcatch type="any">
<cfset local.response['catcher'] = "Write Exception " & #cfcatch.Detail# & " | " & #cfcatch.Message#>
<cfset local.response['success'] = true>
<cfreturn local.response>
</cfcatch>
</cftry>
我应该提到文件上传过程是由 CFC 和 Valums 的 AjaxUpload 插件处理的......