Asp.net 终止ASPX web请求的最有效方法

Asp.net 终止ASPX web请求的最有效方法,asp.net,denial-of-service,Asp.net,Denial Of Service,我正在编写一些应用程序逻辑,可以识别对IIS 5 aspx页面发出的格式错误或恶意http post数据请求。终止错误请求的最有效方法是什么 在识别出错误请求时,将没有缓冲输出,并且C#函数出口堆栈很浅 目前我的直觉是,response.End()的额外混乱及其线程终止异常在DOS攻击情况下可能比常规的204“无内容”响应更具破坏性 从某种角度来看,我的网站正在做什么,所有的aspx点击都会导致数据库查询活动,比如说10ms到300ms,因此以0.5ms的时间作为正常的204回复响应一个格式错误

我正在编写一些应用程序逻辑,可以识别对IIS 5 aspx页面发出的格式错误或恶意http post数据请求。终止错误请求的最有效方法是什么

在识别出错误请求时,将没有缓冲输出,并且C#函数出口堆栈很浅

目前我的直觉是,response.End()的额外混乱及其线程终止异常在DOS攻击情况下可能比常规的204“无内容”响应更具破坏性


从某种角度来看,我的网站正在做什么,所有的aspx点击都会导致数据库查询活动,比如说10ms到300ms,因此以0.5ms的时间作为正常的204回复响应一个格式错误的请求代表了一个巨大的节省。

我会制作一个自定义的IHTTP模块,并让它预处理所有的aspx(或您想要的任何其他文件类型)

如果您不熟悉IHttpModule,它们包含OnBeginRequest OnError等方法。您可以在web.config文件中注册它们。您可以很容易地拥有一个自定义的,在请求的一开始就运行的,并让它查找调皮的部分


好的,有趣的是,我认为C#IIS请求管道处理程序中的管道是II7中的新功能。(我在AmazonEC2VM实例上使用Windows2003)。无论如何,我可以看到通用拦截安全点的优点,但这仍然留下了如何有效终止错误请求的问题?Request.Close()处理底层套接字。如果您担心关闭的开销,只需将请求重定向到死端静态html页面。@ryber“只需将请求重定向到死端静态html页面”。Ooo no,response.Redirect()触发异常,这是我在可疑DOS攻击期间最不想做的事情。什么异常?根据文档,如果头已经发送,它只会抛出HttpException。如果它是在应用程序的其余部分得到请求之前从IHTTP模块调用的,那么它应该是非常好的。@ryber感谢您的澄清。我指的是线程中止异常,当以高频率抛出时,它会导致IIS抖动。但如果这些不是从IHttpModule触发的,则是好消息。