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 |