クライアント用のファイル アップロードを作成し、可能な限り安全にしようとしています。次のコードを使用して、ファイルのアップロードを処理しています。アイデアは、ファイルの名前を変更し、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 プラグインによって処理されていることに注意してください...