IIS7 - HTTP 모듈과 HTTP 처리기 비교
항목 | HTTP 모듈(HttpModule) | HTTP처리기(HttpHandler, HttpAsyncHandler(비동기)) |
요청 반응 | 모든 요청을 프로세싱 | 특정 확장자(*.ext)에 대해서 프로세싱 |
사용가능개체 | 인증,캐쉬,콘텍스트,권한,프로세스,매핑등 모든 작업을 관리 | Request, Response, Session, Server 개체 사용가능 |
이벤트 | 접근->보안->캐쉬->실행(핸들로)->로깅 등 19가지 이벤트를 후킹 | 모듈의 HandlerExecute 이벤트에 ProcessRequest 실행 |
사례 | 보안, | 특정확장자로 제공하는 RSS 피드 |
통계, 로깅(중앙 집중식 처리 가능) | 전용 콘텐츠의 내용을 실시간으로 변경하는 특정 처리기 작성 가능 | |
모니터링 및 제어, | 해석기 | |
전역 문자열 치환 등 프로그램을 개발(페이지 파싱후 변경) |
| |
설정 | IIS 관리 메뉴-> 모듈 | IIS 관리 메뉴-> 처리기 매핑 |
설치 경로 | /BIN(DLL) | /BIN(DLL) |
/APP_CODE(SOURCE CODE) | /APP_CODE(SOURCE CODE) | |
IIS 6.0 유사기능 | ISAPI FILTER(네이티브 코드로만 작성가능) | ISAPI EXTENTION(네이티브 코드로만 작성가능) |
사용 예 | 인증, 압축 모듈 등 | .aspx 파일을 해석하는 ASP.NET 페이지 처리기 |
호출 개체 | 리퀘스트 발생시 Init 함수 호출 | IHttpHandlerFactory |
'Web Tech > ASP.NET,ASP' 카테고리의 다른 글
IIS7 - HTTP 모듈 이벤트 순서 (0) | 2009.05.07 |
---|---|
SQL Injection 처리 2 (2) | 2008.11.13 |
SQL Injection 처리 (2) | 2008.11.06 |
[ASP]서버의 특정파일에서 특정부분만 정보를 읽어오기 (1) | 2008.08.11 |
IIS7 - HTTP 모듈 이벤트 순서
HTTP 모듈의 요청 처리
- BeginRequest - 새 요청을 만들었음을 신호로 알립니다
- AuthenticateRequest - 구성된 인증 메커니즘에서 현재 요청을 인증했음을 신호로 알립니다.
- PostAuthenticateRequest - AuthenticateRequest 이벤트 다음에 발생합니다.
- AuthorizeRequest - 이벤트는 IIS에서 현재 요청에 권한을 부여했음을 신호로 알립니다.
- PostAuthorizeRequest - AuthorizeRequest 이벤트 다음에 발생합니다.
- ResolveRequestCache - 인증 이벤트를 완료하여 이벤트 처리기(예: 페이지 또는 XML Web services)의 실행을 무시하고 캐싱 모듈이 캐시 요청을 처리하도록 하는 경우 발생합니다.
-
PostResolveRequestCache 이벤트 다음과 PostMapRequestHandler 이벤트 전에 이벤트 처리기(요청 URL에 해당하는 페이지)가 만들어집니다. 서버에서 통합 모드로 IIS 7.0이 실행되고 있으며 .NET Framework 버전 3.0 이상이 있는 경우 MapRequestHandler 이벤트가 발생합니다. 하지만 서버에서 클래식 모드로 IIS 7.0 또는 이전 버전의 IIS가 실행되고 있으면 이 이벤트를 처리할 수 없습니다.
- PostMapRequestHandler - 현재 요청을 적절한 이벤트 처리기에 매핑한 경우 발생합니다.
- AcquireRequestState - 현재 요청과 관련된 현재 상태를 가져오는 경우 발생합니다.
- PostAcquireRequestState AcquireRequestState 이벤트 다음에 발생합니다.
- PreRequestHandlerExecute - 페이지 또는 XML Web services 같은 이벤트 처리기의 실행을 시작하기 바로 전에 발생합니다.
- PostRequestHandlerExecute - ASP.NET 이벤트 처리기가 실행을 완료하는 경우 발생합니다.
- ReleaseRequestState - 이벤트 처리기 실행을 완료한 후 발생합니다.현재 상태를 저장 할 수 있습니다.
- PostReleaseRequestState - 이벤트 처리기의 실행을 완료하고 요청 상태 데이터가 저장된 경우 발생합니다.
- UpdateRequestCache - 캐싱 모듈이 캐시의 다음 요청을 처리하는 데 사용할 응답을 저장하도록 하는 경우 발생합니다.
- PostUpdateRequestCache - 캐싱 모듈의 업데이트 및 캐시의 다음 요청을 처리하는 데 사용되는 응답의 저장을 완료하는 경우 발생합니다.
-
LogRequest. - ASP.NET에서 현재 요청에 대한 로깅을 수행하기 직전에 발생합니다.
이 이벤트는 IIS 7.0 통합 모드 및 .NET Framework 3.0 이상에서 지원됩니다.
-
PostLogRequest - LogRequest 이벤트에 대한 모든 이벤트 처리기의 처리를 완료한 경우 발생합니다.
이 이벤트는 IIS 7.0 통합 모드 및 .NET Framework 3.0 이상에서 지원됩니다.
- EndRequest - 요청에 응답할 때 실행의 HTTP 파이프라인 체인에서 마지막 이벤트로 발생합니다.
출저: MSDN http://msdn.microsoft.com/ko-kr/library/system.web.httpapplication_events.aspx
'Web Tech > ASP.NET,ASP' 카테고리의 다른 글
IIS7 - HTTP 모듈과 HTTP 처리기 비교 (0) | 2009.05.07 |
---|---|
SQL Injection 처리 2 (2) | 2008.11.13 |
SQL Injection 처리 (2) | 2008.11.06 |
[ASP]서버의 특정파일에서 특정부분만 정보를 읽어오기 (1) | 2008.08.11 |
SQL Injection 처리 2
SQL Injection 처리 이 글을 작성한 지 한 일주일 정도가 흘렀는데…
블로그에 이 키워드로 방문하시는 분이 꽤 많으신 듯…
해당 키워드를 다시 찾아보니…
구글에 찾아보니 검색된 사이트가 28300여 개로 늘었다. (허걱 4배나…)
음 “빵빵용용”님의 새 글(http://saybox.tistory.com/546 )을 읽어 보면 이 공격의 원인도 보이고 해결 방법도 보인다.
하지만…
Request 를 받는 모든 소스를 수정한다는 것은…만만한 작업은 아니더라...
지금 사이트도 Request를 검색해보니 4~500개
하지만 이 사이트는 1년에 글 한 개 올라오기 힘든 회사 소개 홈페이지 인데…
그것을 위해 게시판 소스를 다 뒤집자니 시간이 아깝고… 검색된 리퀘스트 문장은 4~500개에 가깝고…
그래서 어떻게 편하게 할까 고민해 봤다.
그리고 생각해 난 방법이
이렇게 커넥션 문장 아래에… GET과 POST를 모두 조사해서 DB 문장이 들어오면 에러메시지를 뿌리고 Response.end !!
(사이트 성격에 따라 이렇게 처리해도 무관한 사이트도 있을 것 같아서 올려 봅니다. 참고하세요.!~)
<% Set pConn = Server.CreateObject("ADODB.Connection")
pConn.Open sConnStr Function DBStringCheck(strRequest,strCompare) if instr(Lcase(strRequest),strCompare) > 0 then
response.end end if End Function For Each item1 in Request.QueryString '//차단할 단어를 입력 call DBStringCheck(Request.QueryString(item1),chr(39)) call DBStringCheck(Request.QueryString(item1),"exec") call DBStringCheck(Request.QueryString(item1),"select") call DBStringCheck(Request.QueryString(item1),"xp_") call DBStringCheck(Request.QueryString(item1),"char") call DBStringCheck(Request.QueryString(item1),";") Next For Each item1 in Request.Form '//차단할 단어를 입력 call DBStringCheck(Request.Form(item1),chr(39)) call DBStringCheck(Request.Form(item1),"exec") call DBStringCheck(Request.Form(item1),"select") call DBStringCheck(Request.Form(item1),"xp_") call DBStringCheck(Request.Form(item1),"char") call DBStringCheck(Request.Form(item1),";") Next %> |
'Web Tech > ASP.NET,ASP' 카테고리의 다른 글
IIS7 - HTTP 모듈과 HTTP 처리기 비교 (0) | 2009.05.07 |
---|---|
IIS7 - HTTP 모듈 이벤트 순서 (0) | 2009.05.07 |
SQL Injection 처리 (2) | 2008.11.06 |
[ASP]서버의 특정파일에서 특정부분만 정보를 읽어오기 (1) | 2008.08.11 |
SQL Injection 처리
꼭 바쁜 날 문제가 터지더라~
어쨌든 회사의 홈페이지에 DB를 조회하는 페이지들 스크립트 오류(?)를 내길래 확인해보니
<script src=http://s.ardoshanghai.com/s.js></script> 이런 짱깨의 필이 나는 주소가 잔뜩 들어있더라…...
그래서 구글에 검색해보니…. 헉 7720개….
http://www.google.co.kr/search?complete=1&hl=ko&newwindow=1&q=http%3A%2F%2Fs.ardoshanghai.com%2Fs.js&lr=&aq=f&oq=
(흑 홈페이지 내가 만든 것 아닌데 T.T)
그리하여 찾아보니 http://saybox.tistory.com/453 이렇게 좋은 글이 ^^
저 7720개의 사이트들도 빨리 고쳐져야 할텐데…..
'Web Tech > ASP.NET,ASP' 카테고리의 다른 글
IIS7 - HTTP 모듈과 HTTP 처리기 비교 (0) | 2009.05.07 |
---|---|
IIS7 - HTTP 모듈 이벤트 순서 (0) | 2009.05.07 |
SQL Injection 처리 2 (2) | 2008.11.13 |
[ASP]서버의 특정파일에서 특정부분만 정보를 읽어오기 (1) | 2008.08.11 |
[ASP]서버의 특정파일에서 특정부분만 정보를 읽어오기
<%
'//Writer: SkyLimit
'//Language: ASP
'파일 경로
TextFilePath = "c:\InetPub\test.ini"'//요부분만 수정하세요.
'//파일 시스템 개체 생성
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
'//파일 존재 검사
if fso.FileExists(TextFilePath) then
'//파일 오픈
Set f = fso.OpenTextFile(TextFilePath, 1,false,0) '(fname,mode 1:forReading,create,format 0:ASCII)
Do Until f.AtEndOfLine '파일의 4096 라인까지 읽는다.
buffer= buffer & f.read(4096)
loop
f.close
Set f = Nothing
'//문자열 비교
strArray = Split(buffer,vbcr & vblf)
For i = 0 To UBound(strArray) - 1
if InStr(strArray(i),"AAA") > 0 Then
response.write strArray(i)
End If
Next
else
'//파일 없음
response.write TextFilePath & "이 지정된 경로에 없습니다."
end If
Set FSO = Nothing
%>
'Web Tech > ASP.NET,ASP' 카테고리의 다른 글
IIS7 - HTTP 모듈과 HTTP 처리기 비교 (0) | 2009.05.07 |
---|---|
IIS7 - HTTP 모듈 이벤트 순서 (0) | 2009.05.07 |
SQL Injection 처리 2 (2) | 2008.11.13 |
SQL Injection 처리 (2) | 2008.11.06 |