> 데이터 베이스 > MySQL 튜토리얼 > `mysql_real_escape_string()`은 정말 결함이 있는 걸까요, 아니면 그냥 오해한 걸까요?

`mysql_real_escape_string()`은 정말 결함이 있는 걸까요, 아니면 그냥 오해한 걸까요?

Mary-Kate Olsen
풀어 주다: 2024-12-04 07:15:17
원래의
171명이 탐색했습니다.

Is `mysql_real_escape_string()` Really Flawed, or Just Misunderstood?

mysql_real_escape_string()에 치명적인 결함이 있습니까?

신뢰할 수 없다는 주장에도 불구하고 mysql_real_escape_string()은 준비된 명령문을 직접 작성하는 데 여전히 유용한 도구입니다. . 다음은 기능에 대한 분석과 이를 효과적으로 사용하는 방법입니다.

mysql_real_escape_string() 설명

MySQL C API 문서에는 다음과 같이 명시되어 있습니다. "문자를 변경해야 하는 경우 연결 설정을 수행하려면 SET NAMES(또는 SET CHARACTER)를 실행하는 대신 mysql_set_character_set() 함수를 사용해야 합니다. SET) 구문입니다."

이는 mysql_real_escape_string()을 올바르게 활용하려면 mysql_set_charset()을 사용해야 한다는 의미입니다. PHP의 mysql_set_charset()은 MySQL의 mysql_set_character_set()을 미러링합니다.

증명 코드

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

// Set the character set using mysql_set_charset()
$mysqli->set_charset("utf8mb4");

// Prepared statement using mysql_real_escape_string()
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param('s', mysql_real_escape_string($_GET['username']));
$stmt->execute();
?>
로그인 후 복사

이 예에서 mysql_set_charset()는 연결이 utf8mb4 문자 집합을 사용하는지 확인합니다. 이를 통해 mysql_real_escape_string()은 SQL 주입에 취약할 수 있는 문자를 적절하게 처리할 수 있습니다.

결론

mysql_real_escape_string()의 제한 사항을 이해하는 것이 중요하지만, mysql_set_charset()과 함께 사용하면 자신만의 준비된 명령문을 효과적으로 생성할 수 있습니다. 이러한 단계를 수행하면 SQL 주입 위험을 완화하고 애플리케이션 보안을 유지할 수 있습니다.

위 내용은 `mysql_real_escape_string()`은 정말 결함이 있는 걸까요, 아니면 그냥 오해한 걸까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿