"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 준비된 명령문에 `mysql_real_escape_string()`이 필요합니까?

준비된 명령문에 `mysql_real_escape_string()`이 필요합니까?

2024년 11월 18일에 게시됨
검색:918

Do I Need `mysql_real_escape_string()` with Prepared Statements?

준비된 문에 mysql_real_escape_string() 함수가 필요합니까?

주어진 쿼리와 같이 준비된 문을 활용하는 경우:

$sql = $db->prepare('select location from location_job where location like ?');

$sql->bind_param('s', $consulta);
$sql->execute();
$sql->bind_result($location);

mysql_real_escape_string() 함수는 준비된 문이 입력 내의 특수 문자를 이스케이프하여 SQL 주입 공격을 방지하는 안전한 방법을 제공하므로 필요하지 않습니다.

쿼리 개선을 위한 한 가지 제안은 '?' 자리 표시자를 사용하면 실행 메소드를 통해 매개변수를 보다 편리하게 전달할 수 있습니다.

$sql->execute([$consulta]);

그러나 htmlspecialchars를 사용하여 사용자 입력을 삭제해야 합니다. ()를 표시하기 전에 크로스 사이트 스크립팅 취약점을 방지합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3