2019. 7. 19. 22:11ㆍETC
SQL Injection
- Web hacking 기법 중 하나
- 사용자가 입력한 입력값을 SQL 구문의 일부로 사용하는 경우를 악용하는 공격 기법
SQL Injection 공격 종류
- 인증 우회(AB : Auth Bypass)
보통 아이디와 패스워드를 입력하는 로그인 폼을 타겟으로 대상으로 공격.
SQL 쿼리문의 true/false의 논리적 연산 오류를 이용하여 로그인 인증 쿼리문이 무조건 true의 결과값이 나오게 하여 인증을 무력화 시키는 원리이다.
- 데이터 노출(DD : Data Disclousre)
조작된 쿼리가 실행되도록 하여, 기업의 개인정보나 기밀정보에 접근하여 데이터를 획득할수 있다.
데이터 값을 변경하거나 테이블을 지울 수 있다.
에러를 발생시켜 에러 정보를 바탕으로 DB명, Table명, Column명을 획득하여 악용이 가능하다.
- 원격 명령 실행(RCE : Remote Command Excute)
확장 프로시저를 호출하여 원격으로 시스템 명령어를 수행할 수 있도록 한다. 시스템 명령어를 실행할 수 있다면 해당 서버의 모든 자원에 접근하고 데이터를 수정, 삭제를 할 수 있다.
SQL Injection 방지
1. 사용자에게 받은 값을 필터링하여 DB 쿼리문을 사용
- 입력값에 특수문자가 있을경우 특수문자를 제외시키기.
2. SQL 서버에 오류가 발생했을시 해당하는 에러 메시지를 표시하지 않기
3. 최소 권한 유저로 DB 운영
-
4. 저장 프로시저 사용
- 저장 프로시저는 쿼리문의 형식이 잡혀있기 떄문에 지정된 형식의 데이터가 아니면 쿼리문이 실행이 안된다.