본문 바로가기

Code

ASP - SQL Injection 방지

학회 서버가 중국발 해킹에 뚫려서 보완작업을 수행하였다.

SQL Injection으로 인한 해킹이었는데, 이미 자료는 다 빠져 나갔겠지만,
보안 의식 없는 어르신들께서 뭔가를 취해주길 바라기 때문에 injection 처리를 해주었다.

DB에 쿼리를 날리는 키워드에는 다음과 같은 함수를 이용하여 전처리를 해주면 된다.
MSDN에는 저장 프로시저를 추천하고 있으나, 작업량 및 내공 부족으로 키워드 처리만 수행하였다.


## ASP
function SQL_Injection( get_String )

   get_String = REPLACE( get_String, "'", "''" )
   get_String = REPLACE( get_String, ";", "" )
  get_String = REPLACE( get_String, "--", "" )
   get_String = REPLACE( get_String, "select", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "insert", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "update", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "delete", "", 1, -1, 1 )
  get_String = REPLACE( get_String, "drop", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "union", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "and", "", 1, -1, 1 )
  get_String = REPLACE( get_String, "or", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "1=1", "", 1, -1, 1 )

   get_String = REPLACE( get_String, "sp_", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "xp_", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "@variable", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "@@variable", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "exec", "", 1, -1, 1 )
   get_String = REPLACE( get_String, "sysobject", "", 1, -1, 1 )

   SQL_Injection = get_String

end function

<출처 : 프로글래머 ; http://proglamor.tistory.com/6>