MSDN声明当使用ASP.NET(v.2.0)Fileupload控件或基础HttpPostedFile上载文件时“文件以MIME multipart / form-data格式上传.默认情况下,所有请求,包括表单字段和上传大于256 KB的文件缓冲到磁盘,而不是保
有没有人知道它被缓冲到磁盘的哪个位置以及何时清除/删除此缓冲区,即请求何时结束,以及在请求未正常结束的错误或意外情况下会发生什么?
我担心的是,如果应用程序能够上传敏感信息(CC数据,个人数据等),则该文件将在磁盘上缓冲,并且可能在请求结束时不会被删除.这是共享主机上的问题,即可以从应用程序外部访问此缓冲区吗?
也许我误解了一些东西,但任何建议/见解/帮助都会非常感激,谢谢.
确定已经设法找到上面提出的问题的一些答案,所以只是在这里坚持它,以防它帮助其他人.默认情况下(在machine.config中)文件上传/请求的设置通常是
在请求缓冲到磁盘之前,4mb作为请求的最大大小和256bytes存储在内存中.可以在httpRuntime部分的web.config中覆盖这些设置.
<httpRuntime maxRequestLength="8192" requestLengthDiskThreshold="512" />
上面的示例将允许请求大小高达8mb,并将在512字节后开始在磁盘上缓冲.该文件被缓冲到
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\ [APP_NAME] \ [SOME_HEX_NAME_DIR] \ [SOME_HEX_NAME_DIR] \uploads\
在此路径中,将使用[unique_name] _post.tmp创建一个文件,该文件在请求期间存在,但由于请求具有锁定权限而无法访问.
我尝试以几种方式中断请求(停止IIS,终止进程,上传时关闭页面),并且在所有情况下都删除了tmp文件.
因此,由于缓冲文件不会长时间挂起,因此缓冲的敏感数据似乎不是很大的问题.