데이터베이스에 전송되는 SQL query문을 조작하여 데이터에 접근하거나 변조하는 공격 방법이다.
'
를 입력했을 때 error 발생이는 소스코드에서 $id
변수가 이미 작은 따옴표로 둘러싸여 있는데, $id 자리에 작은 따옴표가 들어가면 '''
가 되기 때문에 SQL명령문 오류가 발생한다.
따라서, 해커가 SQL 명령문을 조작할 수 있다는 뜻!
1' or '1'='1
을 입력해준다.SQL 명령문 상에서는,
WHERE user id = '1' or '1'='1'
처럼 작동한다.
(WHERE user id = '1' or '1'='1
' 에서 제일 바깥 작은따옴표의 안쪽 부분이 입력한 명령)
'1'='1' 은 참이라는 뜻이므로, 모든 사용자의 정보가 출력된다.
'#
입력# 이후의 명령은 주석처리되어 실행되지 않는다.
따라서 SQL 명령문 상에서는,
WHERE user id = '' #'
처럼 작동한다.
아무일도 일어나지 않는다.