본문 바로가기

asp,ms-sql

asp - sql injection 공격방지방법

728x90

sql injection 공격 방지


웹 클라이언트의 반환 메시지를 이용하여 불법 인증 및 정보를 유출하는 공격. 웹 응용 프로그램에 강제로 구조화 조회 언어(SQL) 구문을 삽입하여 내부 데이터베이스(DB) 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회할 수도 있다. 이 공격은 MS SQL 서버뿐만 아니라 모든 관계형 데이터베이스 관리 시스템(RDBMS)에서 가능하다.


쉽게 예를들면 sql문에 들어가는 데이터를 변조하여, 시스템을 조작. (sql문에 들어가는 데이터는 보통 request("")을 이용하니까요.)



사용예)

Function sqlFilter(search)

Dim strSearch(3), strReplace(3), cnt, data

'SQL Injection 특수문자 필터링

'필수 필터링 문자 리스트

strSearch(0)="'"

strSearch(1)="<script"

strSearch(2)="<iframe"


'변환될 필터 문자

strReplace(0)=""

strReplace(1)="script"

strReplace(2)="<iframe"

data = search

For cnt = 0 to 3 '필터링 인덱스를 배열 크기와 맞춰준다.

data = replace(data, LCASE(strSearch(cnt)), strReplace(cnt)) 

Next


sqlFilter = data

End Function


userNumber = sqlFilter(request.form("userNumber"))


sql = "select userName from tblUser with(nolock) where userNumber="& userNumber


이하 DB연결...