什么是保护asp:fileupload的合理方法

时间:2012-03-16 19:41:27

标签: c# asp.net security file-upload

我刚刚阅读了这篇文章:http://www.acunetix.com/websitesecurity/upload-forms-threat.htm,其中讨论了允许用户将文件上传到您的网络服务器所涉及的一些安全风险。

我目前正在开发一个应用程序页面,它将使用asp:FileUpload控件接受简历(可能是office,pdf,open office docs等)。我开始使用将某些文件列入黑名单仅允许某些文件扩展名,现在在做了一些研究后,我想知道通常用于提高安全性的其他方法是什么。

在我的例子中,它是一个用C#编写的asp.net 3.5 Web应用程序。由运行在Windows Server 2008r2上的IIS7.5提供。

2 个答案:

答案 0 :(得分:1)

我的提示是:

  • 确保仅将文件上载到无法从Web直接访问的目录(例如,使用.NET App_Data文件夹或IIS根目录之外的文件夹)。另一种方法是将文件流写入image数据库列,如果不使用SQL Server则等效。
  • 编写一个可以检查权限,角色等的HTTP处理程序,它将文件作为流读取,并仅在用户获得授权时才将其输出到响应(应使用web.config设置进​​行身份验证检查)。
  • 使用系统生成的文件名来防止未经授权的覆盖。

我已经多次看到实现上传只是写入文件夹,开发人员没有意识到(或关心)该文件可以通过http://www.example.com/files/JustUploaded.pdf访问,无需身份验证和/或授权。

答案 1 :(得分:0)

  • 也许您可以将它们解析为流,这样您就不会保存上传者的文件,而是保存已解析的版本。
  • 同时重命名文件并将其存储在特定文件夹中(具有特定权限),而不是与您的操作系统(单独分区)在同一张光盘上
  • 使用POST代替PUT
  • 扫描病毒?
  • 限制最大尺寸

最重要的是:验证所有内容

你可以检查更多的东西