繁体   English   中英

如何关闭asp.net中的HTTP连接?

[英]How to close HTTP connection in asp.net?

我有问题,请帮忙!

我们的网站最近受到了慢速HTTP POST DOS攻击。 这是您的服务器收到大量传入连接并保持很长一段时间的时候,因为发件人发送信息的速度非常慢,并且服务器无法满足真实用户的请求-拒绝服务。

因此,我决定拒绝此类POST请求:

void Application_BeginRequest(object sender, EventArgs e)
{
    if ( _my_condition_here_ )
    {
        _reject_the_request_by_dropping_connection_
    }
}

问题是我无法在asp.net中删除HTTP连接:

Response.End(), throw new Exception(), even Thread.CurrentThread.Abort() 

不要关闭连接。 它在发送者发送所有虚假数据时等待,然后用“ 500服务器错误”或类似的内容回答。 在这种情况下,缓慢的POST攻击仍将成功。

我怎样才能断开连接? 也许IIS 7中有一些设置或模块可以为我做到这一点?

尝试使用Response.Close而不是Response.End。 另请参见此SO线程的已检查答案。

您可以签出IIS7的请求筛选 只是不知道您的“条件”是否可以请求过滤的方式实现。 当然可以选择IP安全性 ,但不是很优雅。 Web服务器前面没有Forefront TMG(或其他防火墙)吗? 如果是这样,您可以在防火墙中添加一些安全性。

如果他们两个都不能满足您的要求,则可能需要编写自己的HTTP模块来停止请求。 但是,这仍然无法回答您如何停止请求的问题。 也许一种解决方案是为那些“用户”提供一个空白页面。 这样,您不必停止请求,而只需为他们提供一个空白页。 这将给您的Web服务器带来一些负担,但不会影响数据库服务器。

您是否考虑过减少连接超时?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM