
mysqli::real_escape_string 함수는 사용자가 입력한 값을 데이터베이스에 저장하기 전에 이 함수를 사용하여 SQL Injection 공격을 방지합니다.
이 함수는 사용자가 입력한 값을 이스케이프 처리하여 SQL 쿼리에서 사용할 수 있도록 합니다.
예를 들어, 사용자가 입력한 이름을 데이터베이스에 저장할 때 이 함수를 사용하는 예시 코드는 다음과 같습니다.
#hostingforum.kr
php
$name = $_POST['name'];
$stmt = $mysqli->prepare("INSERT INTO users (name) VALUES (?)");
$stmt->bind_param("s", $name);
$stmt->execute();
위 코드에서 $_POST['name'] 값은 사용자가 입력한 이름입니다. 이 값을 데이터베이스에 저장하기 전에 이스케이프 처리를 하기 위해 mysqli::real_escape_string 함수를 사용하지 않습니다.
이 함수를 사용하지 않으면 사용자가 입력한 이름에 SQL Injection 공격이 가능합니다.
예를 들어, 사용자가 입력한 이름이 "John' OR 1=1;" 이라면, 데이터베이스 쿼리는 다음과 같이 변경됩니다.
#hostingforum.kr
sql
INSERT INTO users (name) VALUES ('John' OR 1=1;')
이 쿼리는 모든 사용자를 데이터베이스에 저장하도록 합니다.
따라서, mysqli::real_escape_string 함수를 사용하여 사용자가 입력한 값을 이스케이프 처리하여 SQL Injection 공격을 방지해야 합니다.
이 함수의 사용은 꼭 필요한 경우에만 사용해야 합니다.
예를 들어, 사용자가 입력한 값을 데이터베이스에 저장할 때 이 함수를 사용해야 합니다.
하지만, 사용자가 입력한 값을 데이터베이스에 조회할 때는 이 함수를 사용하지 않아도 됩니다.
또한, 데이터베이스 쿼리를 직접 작성할 때는 이 함수를 사용하지 않아도 됩니다.
따라서, 이 함수의 사용은 데이터베이스에 사용자가 입력한 값을 저장할 때만 사용해야 합니다.
2025-07-07 19:23