2

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

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

我们设法使用 Fiddler 重现它: - 发送一个 requestBody < Content-Length 的请求。- 应用程序在第一次引用 HttpRequest.Params 时挂起。- 终止 Fiddler,关闭连接并恢复应用程序。作为主体的应用程序逻辑不完整(0 个文件)。

我认为这是我们必须处理且无能为力的情况。毕竟浏览器可能随时关闭连接。

我想知道是否有一些开关可以阻止 IIS 将不完整的 POST 请求移交给应用程序层(即一些缓冲区)。这将消除 ApplicationLayer 错误监控中的一些噪音。

谢谢,彼得

4

1 回答 1

0

据我所知,IIS 施加的任何限制都可以通过黑客“Slow HTTP Post”拒绝操作系统服务 (DoS) 攻击轻松达到。黑客创建了多个发送不完整请求的服务实例(没有 .RequestBody CRL 终止)。

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

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

无论如何,为了防止 DoS 攻击,需要以编程方式检查不完整的请求并杀死它们

看看这里

http://omaralzabir.com/prevent_denial_of_service__dos__attacks_in_your_web_application/

于 2014-04-18T10:19:54.777 回答