악의적으로 서버에 SQL구문을 포함한 데이터를 전송하여 데이터베이스 쿼리를 조작하는 공격방식
// 정상 로그인 쿼리
SELECT * FROM USER WHERE ID = 'johndoe' AND PASSWORD = 'qwer1234';
// SQL Injection
SELECT * FROM USER WHERE ID = '' OR 1=1 --' AND PASSWORD = 'anything'; // 뒷부분 주석 처리됨
ID = '’OR 1=1--
PASSWORD = ‘아무거나’
첫 번째 입력에 SQL구문이 포함되어 뒤의 내용을 주석처리 하고 항상 통과되도록 쿼리문을 조작하는 것이 가능
이런 공격을 방어하기 위해 입력 형식 검증(특수문자 등)
및 ORM의 파라미터 바인딩을 사용할 수 있음