cjk*_*cjk 9 asp.net iis antivirus file-upload
我正在建立一个允许用户上传文件的门户网站.我需要确保这些文件不包含病毒.我理想的解决方案是让主机OS AV监视临时文件夹并扫描任何传入的文件.
在ASP.Net 2中上传文件时,是否将其写入临时文件夹中的磁盘,或者是否持久存储在内存中?如果它写入磁盘,IIS会锁定它,以便AV无法删除它吗?如果它被写入磁盘,在哪里?
这是ASP.NET处理文件的实际问题.它依赖于版本,但2.0和所有后续版本会在您有机会处理它们之前将上传内容写入磁盘.上面的答案实际上是错误的 - 2.0以上的ASP.NET 会将文件写入磁盘.如果您考虑一下,将内容加载到内存会打开DDOS漏洞,因为大文件会占用越来越多的服务器内存.按版本,这是ASP.NET的行为方式:
ASP.NET 1.0和1.1在您访问它之前将整个请求加载到内存中.这意味着大文件可能会填满所有内存,从而导致异常,从而导致服务器崩溃.
ASP.NET 2.0为上传引入了磁盘缓存方案,再次阻止上传并在客户端代码处理之前对其进行处理.可以按如下方式访问临时文件夹:
string uploadFolder = Path.Combine(HttpRuntime.CodegenDirInternal,"uploads");
从ASP.NET 4.0开始,上面引用的属性名称是HttpRuntime.CodegenDir:
string uploadFolder = Path.Combine(HttpRuntime.CodegenDir,"uploads");
至少现在它已缓存到磁盘,因此您没有1.0和1.1的内存问题,但在完全检索之前您仍然无法访问它.
我认为理想的方法是拥有一个"Incoming"文件夹,该文件夹已获得ASP.NET保存文件的必要权限.我从未遇到过文件保持锁定的情况,即使在调用SaveAsFileUpload控件之后也是如此.
请注意,在您调用之前,FileUpload控件不会上载文件,而是SaveAs在文件持久保存到服务器上的磁盘时.它似乎保存所有文件内容,在调用方法HttpInputStream时写入磁盘SaveAs.
然后,AV应用程序可以自由扫描文件.如果发生错误,您可以向用户提供相关反馈.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           5295 次  |  
        
|   最近记录:  |