본문 바로가기
Q&A2021년 1월 4일1분 읽기

PHP 웹사이트 SQL Injection 방어 코드

전
전민규
조회 525댓글 3

PHP로 만든 오래된 웹사이트가 있는데, SQL Injection을 방어하려면 코드를 어떻게 수정해야 하나요? mysql_query를 아직 쓰고 있습니다.

댓글 3

김김영삼5년 전

mysql_query는 이미 PHP 7에서 삭제된 함수입니다. 즉시 PDO나 MySQLi로 마이그레이션해야 합니다.

// BAD (취약한 코드)
$result = mysql_query("SELECT * FROM users WHERE id='$id'");

// GOOD (PDO Prepared Statement)
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute(['id' => $id]);
$result = $stmt->fetch();

핵심은 사용자 입력을 쿼리에 직접 넣지 않는 것입니다. Prepared Statement를 쓰면 입력값이 SQL 구문으로 해석되지 않습니다.

홍홍재원(guest)5년 전
많이 배웠습니다. 감사해요.
박박성호(guest)5년 전
북마크 해둡니다!
Ctrl+Enter로 등록