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을 방지할 수 있는 가장 효과적인 방법 중 하나이다.
  • 입력 값에 대한 검증 로직을 구현한다.
  • 웹 방화벽을 사용한다.