2009-09-08 3 views
1

IIS 5 aspx 페이지에 대해 만들어진 잘못된 또는 http 포스트 데이터 요청을 인식 할 수있는 응용 프로그램 논리를 작성하고 있습니다. 잘못된 요청을 종료하는 가장 효율적인 방법은 무엇입니까?ASPX 웹 요청을 종료하는 가장 효율적인 방법

잘못된 요청이 식별되면 버퍼링 된 출력이없고 C# 함수 종료 스택이 얕습니다.

현재 나의 직감은 response.End()의 스레드 종료 예외와 함께, 204 번의 "내용 없음"응답보다 DOS 공격 상황에서 더 파괴적 일 수 있다는 점입니다.

내 사이트에서 수행하는 작업에 대한 견해를 말하면 모든 aspx 히트는 DB 쿼리 활동이 10ms에서 300ms로 발생하므로 0.5ms 내에 일반 204 응답으로 조작 된 요청에 응답하면 큰 절약 효과를 나타냅니다.

답변

0

커스텀 IHttpModule을 만들고 모든 aspx (또는 원하는 다른 파일 형식)를 사전 처리하도록합니다.

IHttpModule에 익숙하지 않은 경우 OnBeginRequest OnError 등의 메서드가 포함되어 있습니다. web.config 파일에 등록하십시오. 요청의 맨 처음에 실행되는 사용자 지정 항목을 쉽게 가질 수 있으며 장난 꾸러기가있는 부분을 찾습니다.

http://msdn.microsoft.com/en-us/library/ms227673.aspx

+0

좋아, 재미 나는 II7에서 뭔가 새로운 것을이었다 C#을 IIS 요청 파이프 라인 처리기에서 배관을 생각했다. (Amazon EC2 VM 인스턴스에서 Windows 2003을 사용하고 있습니다.) 어쨌든 일반적인 차단 보안 포인트의 장점을 볼 수는 있지만 잘못된 요청을 효율적으로 종료하는 방법에 대한 질문은 여전히 ​​남아 있습니다. Request.Close()는 기본 소켓을 압축합니다. –

+0

닫기 오버 헤드에 관심이 있다면 막 다른 정적 html 페이지로 요청을 리디렉션하십시오. – ryber

+0

@ryber는 "요청을 막 다른 정적 HTML 페이지로 리디렉션합니다." Ooo no, response.Redirect()는 의심스러운 DOS 공격 중에 내가하고 싶은 마지막 예외를 트리거합니다. –

관련 문제