ASP.NET和不完整的HTTP请求

时间:2013-07-24 14:34:40

标签: asp.net .net windows http iis-7.5

我们有一个处理用户上传文件的ASP.NET应用程序。 浏览器发送(多部分)POST请求。我们有一个简单的HttpHandler并使用HttpRequest.Files来访问上传的文件。它在Windows 2008 R2上的IIS7.5上运行。

有时,我们会看到该集合包含0个文件的错误。在检查HttpRequest.InputStream时,我们看到了 我们有一个不完整的POST请求。 Content-Length标头表示应该有更多的数据。

我们设法使用Fiddler重现它: - 使用requestBody<发送请求内容长度。 - 应用程序挂起对HttpRequest.Params的第一个引用。 - 终止Fiddler,关闭连接和应用程序恢复。作为正文的应用程序逻辑是不完整的(0个文件)。

我认为这是我们必须处理的情况,并且无法做很多事情。毕竟浏览器可能随时关闭连接。

我想知道是否有一些交换机会阻止IIS将不完整的POST请求移交给应用层(即某个缓冲区)。这将消除ApplicationLayer错误监视中的一些噪音。

谢谢, 彼得

1 个答案:

答案 0 :(得分:0)

据我所知,通过黑客攻击可以很容易地达到IIS所施加的任何限制"慢速HTTP帖子"拒绝操作系统(DoS)攻击。 黑客创建多个服务实例发送小的不完整请求(没有.RequestBody CRL终止)。

这种攻击打开了等待不完整部分的链接。如果机器人这样做,它永远不会发送剩余的部分,超过返回的限制"拒绝服务"。

您上传的文件可能是0字节,因为该网站可能受到攻击,无法完成请求。

在任何情况下,要防止DoS攻击需要以编程方式检查未完成的请求并将其杀死

看看这里

http://omaralzabir.com/prevent_denial_of_service__dos__attacks_in_your_web_application/