2011-03-30 8 views
0

문제가 있습니다. 제발 도와주세요!asp.net에서 HTTP 연결을 닫는 방법?

저희 사이트는 최근에 느린 HTTP POST DOS 공격을 받았습니다. 발신자가 정보를 매우 느리게 전송하고 서버가 실제 사용자의 요청 (서비스 거부)을 제공하기 때문에 서버가 많은 수신 연결을 수신하고 오랜 시간 동안 보관해야합니다.

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() 

그래서 나는 그런 POST 요청을 거부 decied . 보낸 사람이 모든 가짜 데이터를 보내는 동안 기다린 다음 '500 서버 오류'또는 그와 같은 대답으로 응답합니다. 이 경우 POST 공격이 느려질 수 있습니다.

어떻게하면 연결을 그냥 끊을 수 있습니까? 아니면 저를 위해 할 수있는 IIS 7의 일부 설정 또는 모듈이 있습니까?

+0

나는 또한 IIS에서 더 많은 설정이 될 것이라고 생각합니다. 지금 당장 기억하십시오. – user492238

+1

이것은 응용 프로그램이 아니라 서버 구성에서 처리해야하는 것과 같습니다. – David

답변

1

Response.End 대신 Response.Close을 시도하십시오. 이 SO thread의 답변을 확인하십시오.

+0

예 !!!! 정확히 내가 원했던 것! 더크 감사합니다! – irriss

0

IIS7의 Request Filtering을 확인할 수 있습니다. 요청 필터링이 가능한 방식으로 '조건'을 구현할 수 있는지 여부는 알 수 없습니다. Ofcourse IP Security은 옵션이지만 매우 우아하지는 않습니다. Forefront TMG (또는 다른 방화벽)가 웹 서버 앞에 있지 않습니까? 그렇다면 방화벽에 보안을 추가 할 수 있습니다.

두 사람이 원하는 것을 할 수없는 경우 요청을 중지하려면 직접 HTTP Module을 작성해야합니다. 그래도 요청을 중지하는 방법에 대한 질문에 대답하지 않습니다. 아마도 해결책은 '사용자'에게 빈 페이지를 제공하는 것입니다. 그렇게하면 요청을 중지 할 필요없이 빈 페이지 만 제공 할 수 있습니다. 그러면 웹 서버에 부하가 발생하지만 데이터베이스 서버에는 영향을 미치지 않습니다.

0

대신 연결 제한 시간을 줄이는 것이 좋습니다.

관련 문제