SQL injection 방어대책.

1) 특수문자 처리
- ‘ (작은 따옴표) 의 처리
     ex) Login.asp 의 경우 id=replace(id,"'","''") - ‘를 ’‘로 바꾸어줌.
- ; (세미콜론) 의 처리
     ex) Login.asp 의 경우 id=replace(id,";","") - ;을 NULL값으로 바꾸어줌.

2) 주석처리
-주석을 입력받을 경우 mon=replace(mon,"--","") - --을 NULL값으로 바꾸어줌.

3) 입력 값의 길이 제한
- maxlength 을 이용한 방법
   ex) <input type=text maxlength=10> - 최대입력 값을 10으로 설정.

4) DB와 연동하는 스크립트의 모든 파라미터들을 점검하여 사용자의 입력값이
   SQL injection을 발생시키지 않도록 수정.

4) 사용자 입력시 특수문자(‘ “ / \ ; : space - +)등이 포함되어 있는지 검사.

5) SQL Server의 에러메세지를 사용자에게 보여주지 않도록 설정.
   - 공격시 리턴되는 에러메세지를 분석하여 공격에 성공할수 있는 SQL injection
      스트링을 알아낼수 있음.

6) 웹 애플리케이션에 사용하는 DB 사용자의 권한을 제한.
   - 일반 사용자 권한으로 모든 System stored procedures에 접근하지 못하도록
      하여 DB전체에 대한 제어권을 얻거나 DB를 운용중인 Server에 대한 접근이
      불가능하도록 함.

7) ‘허용 방식’ 을 사용하여 인자를 검색
- 데이터 유형 (문자열, 정수형, 실수형) 에 대한 검증.
- 허용된 문자셋 (character set) 의 검증.
- 최대 / 최소길이
- NULL 값 허용 여부
- 필수 매개변수, 불필요 매개변수
- 중복 허용 여부 (ex: ID 입력시)
- 숫자의 범위 (날짜의 1-12월)
- 타당한 것으로 지정된 값 (열거형 - enumeration)
- 타당한 패턴의 정규표현식 (이메일 입력시: @)
Posted by 시스템매니아
,