У меня проблема, пожалуйста, помогите!
Недавно наш сайт подвергся атаке медленного HTTP POST DOS. Это когда ваш сервер получает много входящих соединений и сохраняет их в течение длительного времени, потому что отправитель отправляет информацию очень медленно, и сервер не может удовлетворить запрос реальных пользователей - отказ в обслуживании.
Поэтому я решил отклонить такие POST-запросы:
void Application_BeginRequest(object sender, EventArgs e)
{
if ( _my_condition_here_ )
{
_reject_the_request_by_dropping_connection_
}
}
Проблема в том, что я не могу сбросить HTTP-соединение в asp.net:
Response.End(), throw new Exception(), even Thread.CurrentThread.Abort()
не закрывать соединение. Он ждет, пока отправитель отправит все фальшивые данные, а затем ответит «500 ошибка сервера» или что-то в этом роде. Медленная POST-атака в этом случае все равно будет успешной.
Как я могу просто сбросить соединение? Или, может быть, есть некоторые настройки или модули в IIS 7, которые могут сделать это для меня?