我正在为.net MVC 5网站制作相册功能,最近我遇到了an issue where by default .net limits file uploads to 4 MB。
不想再遇到这个错误,我很想把它设置为像1 GB这样大的东西。但这似乎是一个坏主意。我有3个问题:
如果我将文件上传最大长度设置为1 GB,我会打开哪些安全漏洞?
有人建议我只增加上传到特定目录的文件上传长度。这实际上更安全了吗?
在.net中,如果我限制POST,GET或所有请求的长度,配置文件不是特定的。我认为此限制适用于所有请求?
答案 0 :(得分:3)
如果我将文件上传最大长度设置为1 GB,我会打开哪些安全漏洞?
资源消耗DoS攻击更容易成功。 1GB可能很高,但如果您需要接受较大的文件,这可能是您可接受的风险。此设置取决于服务器具有的资源(特别是内存和磁盘大小)以及应用程序的要求。
是的,恶意用户可以发布许多小文件而不是一个大型文件 - 但这些单独的请求将与对服务器的合法请求一起排队。有可能服务器将在合法服务器之前完成恶意处理。例如,上传1GB的恶意用户可能会在处理该文件时阻塞某个线程,而由1000个1兆字节文件引起的负载可以在应用程序的处理过程中分散。
另一次攻击是DDoS攻击,可以同时将其视为多次DoS攻击。增加单个请求允许的最大长度可能意味着DDoS攻击成功,而正常的DoS攻击不会,因为单个用户只有有限的可用带宽。也就是说,您可以让许多用户更容易发布大文件,而在每个用户的损失数量受到单个文件大小限制之前。
有人建议我只增加上传到特定目录的文件上传长度。这实际上是否更安全?
如果只有一组有限的用户可以访问允许大文件上传的页面,那么这将限制任何攻击。
这应该有效,因为AuthorizeRequest
是called before ProcessRequest
where the HttpRuntime
settings are applied。
在.net中,如果限制POST,GET或所有请求的长度,配置文件不是特定的。我认为这个限制适用于所有请求吗?
是的,这适用于所有请求。如果您愿意在POST上接受较大的请求大小,那么就没有额外的风险允许在GET上允许此操作。唯一的优势是入侵检测系统(IDS)应用程序级别,因为它能够将大型GET请求记录为可疑活动。
答案 1 :(得分:0)
您在有限的硬件上运行软件但是您想为用户提供无限的资源吗?你可能没有足够的RAM或磁盘空间。更大的任务将花费更多的时间,因此您的线程将不再可用。这可能会影响响应能力。 DDOS应用程序会更容易。显示这么大的照片也会影响响应速度,使用你的客户ram,崩溃他们的浏览器,所以他们可能永远不会再回到你的网站......可能还有很多我现在想不到的