반응형
SQL Injection이란 조작된 SQL 쿼리가 데이터베이스에 그대로 전달되어 비정상적인 쿼리 명령을 실행시키는 공격 기법이다.
1. 인증 우회 방법
값을 입력하는 input에 SQL 쿼리를 넣어, 해당 문자열이 그대로 데이터베이스에 전달되는 방식
- 세미콜론으로 쿼리를 닫아버리고, 유저를 삭제하는 등의 쿼리를 추가로 넣을 수 있다.
- 비밀번호 뒤에
OR 1=1을 붙여 로그인이 무조건 성공하도록 할 수 있다. - 첫 번째 쿼리를 종료시키고, 원하는 쿼리를 실행시킬 수도 있다.
; DELETE FROM USERS;
2. 데이터 노출
시스템에서 발생하는 에러 메시지를 이용해 공격하는 방법이다.
해커는 GET 방식으로 동작하는 URL 쿼리 스트링을 추가하여 에러를 발생시킨다. 이를 통해 웹앱의 데이터베이스 구조를 유추할 수 있고 해킹에 활용한다.
방어법
- 서버에서 input 값을 입력받을 때, 검증 로직을 추가한다.
- SQL 서버 오류 발생시, 에러 메시지를 감춘다.
- 해커에게 로그가 전달되지 않도록 만든다.
- DBMS에서 제공하는 PrepareStatement 사용하기
?내부에 입력되는 값들은 문자열로만 취급되기 때문에 Injection 공격을 방지할 수 있다.
반응형
'Computer Science' 카테고리의 다른 글
| SQL(RDBMS)와 NoSQL 데이터베이스 (1) | 2025.07.20 |
|---|---|
| CAP 이론과 NoSQL 데이터베이스의 확장성 (0) | 2025.07.20 |
| 데이터베이스 Join (0) | 2025.07.20 |
| 데이터베이스 이상(Anomaly) 현상 (0) | 2025.07.20 |
| 데이터베이스 Key (0) | 2025.07.20 |