SQL INJECTION 개요

코딩 파인애플·2026년 6월 1일

SQL INJECTION

목록 보기
1/5
post-thumbnail

안녕하십니까 코딩 파인애플입니다
이번 첫 글은 SQL INJECTION에 관해 알아보겠습니다.

SQL INJECTION이란?

SQL Injection (SQL을 주입하다) 는 해커가 웹사이트의 입력창에 SQL 명령어를 주입하여 웹사이트 뒤에 있는 데이터베이스(DB)를 조작하는 대표적인 웹 해킹 기법을 말합니다.

만일 sqli 공격이 성공하였을 경우 인증 우회, 개인정보 조회, 데이터 수정 및 삭제 등 심각한 피해가 발생할 수 있습니다

예를 들어 뭐 이딴 코드가 있다 칩시다.

<?php
$userId = $_POST['id'];
$userPw = $_POST['pw'];

$query = "SELECT * FROM users WHERE username = '" . $userId . "' AND password = '" . $userPw . "'";

$result = mysqli_query($conn, $query);

if (mysqli_num_rows($result) > 0) {
    echo "로그인 성공!";
} else {
    echo "로그인 실패...";
}
?>

이런 코드의 경우 순수하다 못해 백치미 넘치는 개발자는 당연 사용자가 유저이름이나 비번을 넣겠다고 생각하겠지만 세상은 그리 쉽지 않습니다.

$query = "SELECT * FROM users WHERE username = '" . $userId . "' AND password = '" . $userPw . "'";

만일 사용자가 정상적인 형태의 입력값을 코드에 넣었다면
sql 문은 다음과 같은 형태가 됩니다

SELECT * FROM users
WHERE username = 'apple'
AND password = '1234';

하지만 위에서도 말했다시피 세상은 그리 쉽지 않습니다 인젝션을 하기 위해

코드에서 따음표를 미리 저희가 선수를 치는 겁니다.

' or 1--을 비번이나 아이디에 입력하게 된다면 작은 따음표로 입력된 곳이 코드에 의도된 바와 다르게 사용자에 의해 미리 닫히게 됩니다

그 뒤 or 1을 통해 어떠한 조건에도 참이 되게 값을 설정하여 로그인을 우회하게 만듭니다

마지막 화룡점정으로 -- 을 이용해 그 뒤에 나오는 sql문들을 전부 주석으로 처리합니다. (MySql의 경우 '#'가 주석)

그렇게 저희는 하나의 웹사이트를 쉽게 따잇! 하게 된 겁니다.

이상으로 글을 마치겠습니다 감사합니다

profile
안녕하떼요 취미로 콤푸타 배우는 고든학교 6학년 유치원생이빈다.

0개의 댓글