본문 바로가기

Security/Web Hacking

No.9 SQL인젝션 방어법

SQL 인젝션 방어법에 대해 알아봅시다. 

 

1. 사용자 입력 값 검증

즉 사용자의 입력 폼과 URL의 입력값을 검증하여 특수문자가 포함되어 있는지 여부를 확인하여 필터링 해야 됩니다.

예를들어

double quote(") single quote(') , (\), (;), (%), (@), (*), (&), (()), ($), (^), (~) , (?)

등의 특수문자등을 필터링해야됩니다

필터링을 위해선

 

replace() 함수를 쓰시면됩니다.

즉 아까 보았던

board_search.asp => 사용자가 어떤이름으로 게시판 검색asp문을 만드느냐에 따라 다릅니다.

이곳에

<%  

keyword = Request("keyword")

 

keyword = replace(keyword, "%", "")

keyword = replace(keyword, "--", "")

 

Set objRs = Server.CreateObject("ADODB.Recordset")
strSQL = "Select * From bbs Where tTitle like '%" & keyword & "%'"
objRs.Open strSQL, objConn, 1

TotCount = objRs.RecordCount

 

위와 같이 입력을 해주시면

쿼리 분석기에서도 필터링 이전과 이후의 쿼리문이 달라지게 되고

에러 검출도 달라지게 됩니다.

 

2. 에러 메시지 처리

 

에러 메시지는 아까 처럼 아주 중요한 정보등을 보여줄수 있습니다.

이것을 방지하기 위해 잘못된 입력 값임을 알려주는 팝업창을 따로 띄우거나 아니면

새로운 페이지로 이동하게만들어야 합니다.

 

3. 사용자 권한 제한

sysadmin등의 권한을 제한 해야 합니다

일반 사용자는 db를 통해 시스템에 접근할 필요가 없으므로

웹 어플리케이션이 사용하는 사용자 권한을 제한하여 저장된 프로시저에 접근하지 못하도록 해야됩니다.

 

4. Webnight 등과 같은 웹 방화벽이용

'Security > Web Hacking' 카테고리의 다른 글

No.11 파라미터 변조 공격  (0) 2012.07.11
No.10 Web Shell Upload 공격  (0) 2012.07.11
No.8 SQL인젝션 공격 실습(2)  (0) 2012.07.11
No.7 SQL 인젝션 공격 실습  (0) 2012.07.11
No.6 SQL인젝션 알아보기  (0) 2012.07.11