SQL 인젝션 (SQL Injection)공격 기술문서
- 최초 등록일
- 2022.04.07
- 최종 저작일
- 2022.01
- 15페이지/ 한컴오피스
- 가격 1,000원
* 본 문서(hwp)가 작성된 한글 프로그램 버전보다 낮은 한글 프로그램에서 열람할 경우 문서가 올바르게 표시되지 않을 수 있습니다.
이 경우에는 최신패치가 되어 있는 2010 이상 버전이나 한글뷰어에서 확인해 주시기 바랍니다.
소개글
SQL 인젝션 공격 기법의 개념, 공격의 종류 (특히 Error based SQL Injection, Union based SQL Injection을 중심적으로 기술하였음.), 취약점 판단, 대응기법에 관한 기술문서.
목차
1. SQL 이란?
2. SQL Injection 공격
1) 개념
2) 인증 우회
3) Stored Procedure
4) DB 내의 데이터 노출
3. SQL Injection 실습
4. SQL Injection 대응방안
1) 취약점 판단
2) 대응 기법
5. 맺음말
6. 참고문헌
본문내용
SQL 이란?
SQL은 Structured Query Language(구조적 질의 언어)의 줄임말로 관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어이다. SQL은 1970년대에 IBM에서 최초로 개발되었으며 관계형 모델이라는 이론에서 파생된 특징을 가지고 있는데, 현재 SQL의 표준으로 ANSI SQL이 정립되었다.
SQL은 다음과 같은 언어적 특성을 갖는다.
-SQL은 대소문자를 가리지 않는다.
-SQL명령은 반드시 세미콜론(;)으로 끝난다.
-고유의 값은 따옴표('')로 감싼다.
또한 SQL 명령어는 크게 3가지로 나뉜다.
<중 략>
대응 기법
- 데이터베이스와 연동을 하는 스크립트의 모든 파라미터들을 점검하여 사용자의 입력 값이 SQL Injection을 발생시키지 않도록 수정한다.
- 사용자 입력이 SQL Injection을 발생시키지 않도록 사용자 입력 시 특수문자(' " / \ ; : Space -- +등)가 포함되어 있는지 검사하여 허용되지 않은 문자열이나 문자가 포함된 경우에는 에러로 처리한다.
- SQL 서버의 에러 메시지를 사용자에게 보여주지 않도록 설정한다. 공격자는 반환되는 에러 메시지에 대한 분석을 통하여 공격에 성공할 수 있는 SQL Injection 스트링을 알아낼 수 있다. 따라서 SQL 서버의 에러 메시지를 외부에 제공하지 않도록 한다.
- 웹 애플리케이션이 사용하는 데이터베이스 사용자의 권한을 제한한다. 가능하면 일반 사용자 권한으로는 모든 system stored procedures에 접근하지 못하도록 하여 웹 애플리케이션의 SQL Injection 취약점을 이용하여 데이터베이스 전체에 대한 제어권을 얻거나 데이터베이스를 운용중인 서버에 대한 접근이 불가능하도록 한다.
- javascript에서만 검증하지 않는다. javascript는 공격자가 브라우저에서 임의로 끌 수 있기 때문에 반드시 서버에서 한번 더 체크한다.
참고 자료
https://rh-cp.tistory.com/70
https://noirstar.tistory.com/264
https://www.icia.co.kr/community/board/view/2/1/89