본문 바로가기
Computer Science/DataBase

SQL Injection이란??

by Ray 2021. 4. 27.

1. SQL Injection은 무엇인가?

SQL Injection 은 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격하는 방식을 말합니다.

즉, 보안상의 취약점을 이용하여 임의의 SQL문을 주입하고 실행되게 하여 서버의 데이터베이스에 비정상적 동작을 하도록 조작하는 행위입니다.

비교적 쉬운 공격이지만, 성공할 경우 큰 피해를 입힐 수 있는 공격입니다.

주로 서버가 사용자의 입력을 제대로 필터링하지 못했을 경우 발생합니다.

2. 어떻게 공격이 이루어지고 어떤 피해를 발생시키는가?

- 논리적 에러를 이용한 SQL Injection

    : 'OR 1=1 -- 

    ⇒ 쿼리문의 where 절을 모두 참으로 만들고 뒤의 구문을 주석처리 시켜서 통과

    로그인 시, User 테이블의 모든 정보를 조회할 수 있고, 가장 먼저 만들어진 계정에 접속할 수 있어 또 다른2차 피해 발생

- Union 명령어를 이용한 SQL Injection

    : 두 개의 쿼리문에 대한 결과를 통합하여 하나의 테이블로 보여주는 Union을 활용한 공격

    Union하려는 두 테이블의 컬럼 수와 데이터 형이 같아야 하지만 성공하면 다른 개인정보에 접근할 수 있음

- Bollean based SQL Injection

    : 데이터베이스로부터 단순히 참과 거짓의 정보만을 알 수 있을 때 사용.

    임의의 SQL문을 주입하고 그에 대한 참,거짓 값을 확인하면서 DB의 정보를 알아낼 수 있음

3. 그럼 어떻게 방어해야 하는가?

- 입력 값에 대한 검증

    : SQL Injection에 사용되는 기법과 키워드가 많이 때문에 서버에서 화이트 리스트 기반으로 검증해야 함.

- Prepared Statement 구문 사용

    : 사용자의 입력갑이 DB의 파라미터로 들어가기 전에 DBMS가 미리 컴파일하여 대기.

    그 후 사용자의 입력 값을 문자열로 인식하여 전체 쿼리문이 공격자의 의도대로 작동하지 않음

- Eooro Message 노출 금지

    : 공격자가 SQL Injection을 수행하기 위해서는 DB의 정보(테이블명, 컬럼명 등)이 필요한데, 이를 에러 처리 해주지 않은 다면 그대로 노출 됨.

    따라서 에러 처리를 하여, 사용자에게 보여줄 수 있는 부분만 노출시킴

- 웹 방화벽 사용

    : 웹 공격 방어에 특화되어 있는 방화멱을 사용.

    소프트웨어 형, 하드웨어 형, 프록시 형으로 구분된 웹 방화벽을 사용하여 방어

Q1 웹 방화벽의 작동 방식은?

웹 방화벽은 Web server 쪽으로 전송되는 모든 HTTP Request Packet을 검사하여, Web Application에게 의도하지 않은 내용들을 전송되지 못하도록 하는 역할을 합니다.

소프트웨어 형 : Web server 내에 웹 방화벽 소프트웨어를 (VAM위에)설치하여, 위부 해킹으로부터 Web server를 보호하며 유연한 설치와 활용이 장점.

하드웨어 형 : Web 및 Application 서버와 가까운 LAN에 하드웨어를 설치하는 것으로, 웹 사이트를 오가는 패킷을 빠르게 추적하고 필터링.

프록시 형 : DNS 서버 주소를 웹 방화벽으로 바꾸고, 서버로 가는 트래픽이 모두 웹 방화벽을 먼저 거치도록 하는 방법

'Computer Science > DataBase' 카테고리의 다른 글

Clustered Index와 Non-Clustered Index??  (0) 2021.05.17
트랜잭션이 왜 필요할까?  (0) 2021.05.17
DB를 왜 사용할까?  (0) 2021.05.17