我看到了这个问题:
ASP.NET File Upload: how can I make sure that an uploaded file is really a JPEG?
关于确保通过asp上传文件的类似问题:ASP.net中的FileUpload控件确实是图像 . 但如果用户上传受病毒感染的图像呢?如何保证通过我的ASP.net应用程序上传的图像文件不会影响我的网络应用程序文件夹中的文件和/或其他用户上传的图像?
我看到了这个问题:
ASP.NET File Upload: how can I make sure that an uploaded file is really a JPEG?
关于确保通过asp上传文件的类似问题:ASP.net中的FileUpload控件确实是图像 . 但如果用户上传受病毒感染的图像呢?如何保证通过我的ASP.net应用程序上传的图像文件不会影响我的网络应用程序文件夹中的文件和/或其他用户上传的图像?
4 回答
只要你没有将它作为图像(内容类型)以外的任何东西发送给任何人,并且永远不会尝试执行(.exe)文件,你就可以了 .
大多数反病毒软件都运行称为“按访问扫描” . 也就是说,当文件被更改时,它会自动扫描该文件 .
因此,将该文件保存到文件系统,让服务器的防病毒软件为您完成工作 .
我会采取一个可能有点争议的立场 .
没有办法100%确定知道文件的意图是什么,无论是善还是恶 . 是不可能的 . AV扫描仪为您提供了一些数据,但它们也无法为您提供100%的保证 . 没人能 .
鉴于这一现实,您需要构建您的应用程序,假设所有上传的文件都不好 . 是的,扫描仍然很好,将过滤掉一堆东西 . 但它永远不会是100% . 是99.999%还是20%?谁知道 . 真的有关系吗?
假设所有用户提供的内容都不好,我今天会构建任何应用程序 . 很坏 . 敌意不好 . 因为如果你成功的话,最终会是这样 . 如果是这样,你就会为他们做好准备......而不是所有那些必须重新架构他们的应用程序的人,因为他们在早期做出了错误的假设 .
有关您确切问题的更多数据,我很乐意更具体地评论它们......
作为旁注,在旧版本的
IIS (6 or prior versions)
中,可以在使用原始文件名保存文件后将FileName
更改为真正的恶意文件名 . Which has possibility to be read and execute regularly by the server .例如 . 设置文件名如:
file.asp;.jpg
或file.asp%00.jpg
等...它还可以通过操作文件名来更改目标目录 . Which is extremely dangerous
例如 .
newfolder.asp::$Index_Allocation
或其他......还有一些新的攻击方式 . Read更多在这里 .