질문:
Prepared를 사용할 때 mysql_real_escape_string() 함수를 사용해야 합니까? 데이터베이스 쿼리를 위한 명령문이 있습니까?
컨텍스트:
제공된 코드는 mysqli 라이브러리를 사용하여 준비된 명령문 쿼리를 보여줍니다. 그러나 현재는 mysql_real_escape_string() 함수를 사용하여 사용자 입력을 삭제합니다.
<code class="php">$consulta = $_REQUEST["term"]."%"; ($sql = $db->prepare('select location from location_job where location like ?')); $sql->bind_param('s', $consulta); $sql->execute();</code>
답변:
아니요. 준비된 명령문은 SQL 주입 및 올바르게 사용하면 데이터 조작. 자동으로 입력을 삭제하여 mysql_real_escape_string()을 중복되게 만듭니다.
개선 사항:
쿼리가 준비된 문을 올바르게 사용하는 동안 약간만 수정하면 효율성이 향상될 수 있습니다. Bind_param() 메서드를 사용하는 대신, Execution() 메서드를 사용하여 매개변수를 직접 전달할 수 있습니다.
<code class="php">$sql->execute([$consulta]);</code>
추가 참고:
준비된 문은 보호하지만 SQL 주입에 대해 페이지에 출력할 때 데이터의 안전성을 보장하지 않습니다. 잠재적인 XSS(교차 사이트 스크립팅) 공격을 방지하려면 htmlspecialchars()를 사용하여 데이터를 브라우저에 출력하기 전에 HTML로 인코딩하는 것이 좋습니다.
위 내용은 준비된 명령문에 보안을 위해 `mysql_real_escape_string()`이 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!