라이브러리
[PHP] mysqli::real_escape_string - 연결의 현재 문자 집합을 고려하여 SQL 명령문에서 사용할 문자열의 특수 문자를 이스케이프합니다.
mysqli::real_escape_string
`mysqli::real_escape_string`은 MySQLi 확장의 함수 중 하나로, 사용자 입력 데이터를 MySQL 쿼리에 안전하게 삽입할 수 있도록 도와줍니다. 이 함수는 SQL 인젝션 공격을 방지하기 위해 사용됩니다.
SQL 인젝션 공격
SQL 인젝션 공격은 사용자 입력 데이터가 MySQL 쿼리에 삽입되어 공격자가 원하는 쿼리를 실행할 수 있도록 하는 공격입니다. 예를 들어, 사용자 입력 데이터가 다음과 같이 쿼리에 삽입된 경우:
#hostingforum.kr
php
$username = $_POST['username'];
$query = "SELECT * FROM users WHERE username = '$username'";
공격자가 `username` 필드에 `' OR 1=1 --`를 입력하면, 쿼리는 다음과 같이 변경됩니다:
#hostingforum.kr
sql
SELECT * FROM users WHERE username = '' OR 1=1 --'
이 쿼리는 모든 사용자를 반환하게 됩니다. 이와 같은 공격을 방지하기 위해 `mysqli::real_escape_string` 함수를 사용합니다.
mysqli::real_escape_string 사용 예제
#hostingforum.kr
php
// MySQLi 연결 설정
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
// 사용자 입력 데이터
$username = $_POST['username'];
// 사용자 입력 데이터를 안전하게 삽입
$username = $mysqli->real_escape_string($username);
// 쿼리 실행
$query = "SELECT * FROM users WHERE username = '$username'";
$result = $mysqli->query($query);
// 결과 출력
while ($row = $result->fetch_assoc()) {
echo $row['username'] . "
";
}
mysqli::real_escape_string 사용 시 주의점
`mysqli::real_escape_string` 함수를 사용할 때 주의할 점은 다음과 같습니다.
* 이 함수는 MySQLi 확장의 함수이므로, MySQLi 확장을 사용하는 경우에만 사용할 수 있습니다.
* 이 함수는 사용자 입력 데이터를 안전하게 삽입할 수 있도록 도와줍니다. 그러나, 이 함수만으로는 모든 SQL 인젝션 공격을 방지할 수 없습니다. 다른 보안 대책도 함께 사용해야 합니다.
* 이 함수는 MySQLi 확장의 버전 4.1.0부터 사용할 수 있습니다.
mysqli::real_escape_string 대체
`mysqli::real_escape_string` 함수는 MySQLi 확장의 버전 5.3.0부터는 사용되지 않습니다. 대신, `mysqli_stmt::bind_param` 함수를 사용하여 쿼리 매개변수를 안전하게 삽입할 수 있습니다.
#hostingforum.kr
php
// MySQLi 연결 설정
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
// 쿼리 준비
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
// 쿼리 매개변수 바인딩
$stmt->bind_param("s", $username);
// 사용자 입력 데이터
$username = $_POST['username'];
// 쿼리 실행
$stmt->execute();
// 결과 출력
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $row['username'] . "
";
}
이 예제에서, `mysqli_stmt::bind_param` 함수를 사용하여 쿼리 매개변수를 안전하게 삽입했습니다. 이 함수는 사용자 입력 데이터를 안전하게 삽입할 수 있도록 도와줍니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.