SQL Injection공격대책
- 부적절한 파라미터 사용 차단(시큐어 코딩)
- 파라미터내의 특수문자(‘) 및 특정 단어를 다른 문자로 변환하거나 차단
single quote(‘), back slash(\)
semicolon(;), at(@), asterisk(*), Ampersand(&),
Question mark(?), Select, Update, Insert , Delete, Drop,
Exec, xp_ , sp_ , and , or, union 등
ASP)
Replace()함수를 사용하여 특수문자(‘) 등을 일반문자열로 변환
(예)
prodid = request.querystring(“productid”)
prodid = replace(prodid, "'", "''“) //특수문자 제거
prodid= replace(prodid, “;”, “”)
Replace(string, find, replacewith, [start, count, compare]) ㄴ지정된 수의 부분 문자열을 지정한 횟수 만큼 다른 부분 문자열로 바꾼 문자열을 반환한다. string : 바꿀 하위 문자열을 포함하는 문자열 식 find : 검색할 문자열 replacewith : 대체할 문자열 start : 선택요소, 문자열 검색을 시작할 식 내 위치, 기본값은 1 count : 선택요소, 문자열 대체 횟수, 생략하는 경우 기본값은 -1 compare : 선택요소, 하위 문자열 평가시 사용할 비교 종류를 나타내는 숫자 값, sbBinaryCompare 0 = 이전 비교를 수행 vbTextCompare 1 = 텍스트 비교를 수행 |
- 가상 디렉터리(운영 웹 사이트) à 오류 페이지
- 시스템 에러 발생시 오류코드에 따라 어떤 페이지를 사용자에게 전송할지를 결정
- 브라우저에 오류 메시지 보이지 않도록 설정
ㄴgroup by, having, union등 불가능 Blind Injection으로 해야함
- DB 최소권한 운영
ㄴ저장 프로시저 같은 기능 사용 불가
- 사용하지 않는 MS-SQL 저장 프로시저와 기능 제거
- 웹 방화벽을 이용하여 공격 차단