上传照片 - 如何保持我们的网站安全/稳定

时间:2009-04-24 16:03:15

标签: asp-classic upload

我的网站希望用户上传他们的照片......但如何保护我们的服务器免受伤害?仅允许JPG可以避免病毒问题,但如果有人选择10Gb文件会怎么样?这会减慢整个网站的速度吗?

我们正在使用经典ASP和IIS6(对不起,但就是这样,不能改变它!)。以前我们使用名为Persits的公司的DLL来处理上传。但是,如果我们将此讨论扩展到其他语言/技术,对其他人也会有所帮助。

ASP在完成上传之前无法检测到文件的大小,所以这很痛苦。或者我可以在开始传输之前检查HTTP标头中的内容长度吗?

Q1。有没有其他方法可以滥用上传工具?
Q2。如何限制网站运行和服务器安全的危险?

谢谢。

6 个答案:

答案 0 :(得分:2)

在Persists中,您可以设置用户可以上传的最大文件大小:

Upload.SetMaxSize 100000, True

上面的“True”表示如果超过最大尺寸,将拒绝该文件。如果设置为False,则该文件将被删除。

请参阅http://www.aspupload.com/object_upload.html#SetMaxSize

答案 1 :(得分:2)

如果您使用的是ASP.Net,则可以在web.config(或machine.config)中指定文件的最大大小,并且ASP.Net将在上载超过大小后抛出错误。也就是说,如果您指定限制为4Mb,而某些人尝试上传100Mb,.Net会在上传超过4Mb后立即投诉。

有问题的属性是 maxRequestLength ,它符合MSDN“指定输入流缓冲阈值的限制,以KB为单位。此限制可用于防止导致的拒绝服务攻击,例如,用户将大文件发布到服务器。“

例如。

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="4000" ....

我不确定在经典ASP中是否有相同的效果。

答案 2 :(得分:0)

有一个很棒的组件使用Flash上​​传文件。看看

http://www.codeproject.com/KB/aspnet/FlashUpload.aspx

答案 3 :(得分:0)

这似乎强制执行文件上传大小:http://www.aspupload.com/

我不确定它是如何处理它的。

答案 4 :(得分:0)

我刚刚在IIS中找到了一篇关于如何使用名为“AspMaxRequestEntityAllowed”的设置来限制大小的文章: http://www.banmanpro.com/support2/File_Upload_limits.asp

但是,它不起作用 - 我的服务器已经将该设置设置为200k,但我们目前正在上传1Mb文件!

答案 5 :(得分:0)

您可以在使用Microsoft的UrlScan工具访问应用程序之前拒绝IIS级别的超大请求:http://technet.microsoft.com/en-us/security/cc242650.aspx

对于IIS 6,看起来您可能根本不需要它。您应该能够将MaxRequestEntityAllowed和ASPMaxRequestEntityAllowed元数据库属性设置为所需的最大值,并且此时请求将被截断。