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

Asp classic 上传照片-如何保证我们网站的安全/稳定,asp-classic,upload,Asp Classic,Upload,我的网站希望用户上传他们的照片…但我如何保证我们的服务器安全不受伤害?只允许JPG应该可以避免病毒问题,但如果有人选择了10Gb的文件,会不会使整个网站的速度变慢 我们使用的是经典的ASP和IIS6(很抱歉,事实就是这样,无法改变!)。之前,我们使用了一家名为Persits的公司的DLL来处理上传。但是,如果我们也将此讨论扩展到其他语言/技术,将对其他人有所帮助 ASPs无法检测文件的大小,直到它完成上传,所以这是一个痛苦。或者,我可以在开始传输之前检查HTTP头中的内容长度吗 问题1。有没有其

我的网站希望用户上传他们的照片…但我如何保证我们的服务器安全不受伤害?只允许JPG应该可以避免病毒问题,但如果有人选择了10Gb的文件,会不会使整个网站的速度变慢

我们使用的是经典的ASP和IIS6(很抱歉,事实就是这样,无法改变!)。之前,我们使用了一家名为Persits的公司的DLL来处理上传。但是,如果我们也将此讨论扩展到其他语言/技术,将对其他人有所帮助

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

问题1。有没有其他方法可以让人滥用上传功能?
问题2。如何限制危险以保持站点运行和服务器安全


谢谢。

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


这似乎强制文件上载大小:


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

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

Upload.SetMaxSize 100000, True
上面的“True”表示如果超过最大大小,将拒绝该文件。如果设置为False,则将对文件进行编译


请参见

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

所讨论的属性是maxRequestLength,它根据MSDN“指定输入流缓冲阈值的限制,单位为KB。此限制可用于防止拒绝服务攻击,这些攻击是由用户向服务器发布大文件等引起的。”

比如说

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


我刚刚找到一篇文章,介绍如何在IIS中使用名为“AspMaxRequestEntityAllowed”的设置限制大小:


然而,它不工作-我的服务器已经在200k的设置,但我们目前正在上传1Mb的文件ok

您可以使用Microsoft的UrlScan工具在IIS级别拒绝超大请求,甚至在它们到达您的应用程序之前:


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

您是说一家名为“Persistences”的公司吗?谢谢,但在文件看起来有多大之前,它是否先上载整个文件?用户手册:“SetMaxSize设置的值将分别应用于每个上载的文件,而不是整个上载。由于AspUpload无法预先知道帖子中有多少文件以及文件有多大,因此它将始终允许上传过程进行,即使第一个文件超过了指定的限制“因此,文件将被上传,如果上传失败,它将根据设置被截断或删除。嗯,这是一个耻辱-这意味着10Gb的文件仍然会占用服务器很长时间,而不是在超过2Mb时被踢出(比如说)。谢谢你帮我查了一下!是的,这是我和凯蒂在上面提到的波斯组件。在完成上传之前,它不会检查文件大小,这很遗憾。这是因为在上传文件时,http请求中不存在内容长度头吗?假设分块传输编码绕过了这一点。我的服务器已经允许AspMaxRequestEntity200K,但我们目前正在上传1Mb文件,ok!它似乎忽略了它。您是否尝试设置这两个值?或者上传使用分块传输编码?另外,我相信这些设置只适用于ASP,而不适用于ASP.NET。我只能假设我们当时使用的是分块传输编码(尽管我不知道这是什么,对不起!)。