본문 바로가기

IT . Web

SQL Injection 방지 / 기본 필터 팁(서버 사이드 기술무관)

소 잃고 외양간 고친다고.. 최근 중국에 계신 IT 관련 누군가에 의해..
제가 관리하는 사이트가 SQL Injection 공격을 수차례 당했습니다. :(

그래서 손쉽게 전체 페이지에 간단하나마 필터를 하려면 어떻게 할까 하다가,
매우 기초적인 예제가 떠올랐습니다. :)

샘플은 vbscript (ASP)

For Each vItem In Request.QueryString
if InStr(Request.QueryString(vItem), ";") > 0 or InStr(lcase(Request.QueryString(vItem)), "sysobject") > 0 or InStr(lcase(Request.QueryString(vItem)), "declare") > 0 or InStr(lcase(Request.QueryString(vItem)), "varchar(") > 0 then '// for check 
response.write "Fuck, the regulation!" '// watch The Legend of 1900 ^^;
response.end
end if
next

사실 페이지에 get, post로 넘겨지는 값을 통해서 유해한(?) SQL 문장을 삽입하는 공격법인지라, 하나하나 막는 건 부담스럽습니다.

사용언어가 무엇이든, 저렇게 한바퀴 돌면서 "너의 파라미터 이름이 뭔지는 궁금하지 않아, 내용이 위험한지만 궁금해~" 라고 다정하게 속삭여주면 최소한의 방어는 이루어지게 됩니다.

저는 위의 구문을 데이터베이스 라이브러리를 로드하는 포함페이지 상단에 넣어 두었습니다.

물론 한바퀴 도느라 response time은 미세하게 늘어나겠지만, 그래도 안전하게 보험드는 게 좋겠죠?

태그