Back-End/SpringBoot
SQL Injection
개발하는 구름이
2023. 8. 27. 14:13
SQL Injection
- 초보적인 해킹 방법, 간단하게 말하자면 sql 구문을 집어넣는것
- 악의적인 sql 구문을 실행하게 함으로써, 데이터베이스를 비정상적으로 조작하는 공격 기법
예를 들어, 로그인 폼의 아이디와 비밀번호 입력 필드에 다음과 같이 입력한다면
아이디: admin
비밀번호: ' OR '1'='1
실제로 실행되는 쿼리는 다음과 같다.
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
여기서 '1'='1' 조건은 항상 참이므로, 로그인 시스템이 제대로 작성되지 않았다면 악의적인 사용자가 아이디와 비밀번호 없이도 로그인할 수 있게 된다.
SQL Injection 대응 방법
- Prepared Statements
- SQL 쿼리를 실행하기 전에 입력값을 placeholder(?)로 대체하여 쿼리를 준비한다. 이는 SQL Injection을 방지할 수 있는 가장 효과적인 방법 중 하나이다.
- 입력 값에 대한 검증 로직을 구현한다.
- 웹 방화벽을 사용한다.