>  기사  >  데이터 베이스  >  준비된 명령문에 mysql_real_escape_string()이 여전히 필요합니까?

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

Linda Hamilton
Linda Hamilton원래의
2024-11-02 07:50:02793검색

Is mysql_real_escape_string() Still Necessary with Prepared Statements?

준비된 명령문에서 문자열 이스케이프 처리: mysql_real_escape_string()의 필요성

SQL 쿼리 작업 시 사용자 제공 입력을 이스케이프하여 SQL 삽입 공격으로부터 보호하는 것이 중요합니다. . 질문이 생깁니다: 준비된 문을 사용할 때 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();
$sql->bind_result($location);

$data = array();

while ($sql->fetch()) {
    $data[] = array('label' => $location);
}</code>

준비된 문은 쿼리에서 데이터를 분리하여 SQL 보안을 강화합니다. 악의적인 주사. 하지만 mysql_real_escape_string()이 더 이상 사용되지 않는 것은 아닙니다.

데이터 입력으로 인해 쿼리가 변경되지 않도록 코드를 간단히 수정하면 보안을 더욱 강화할 수 있습니다.

<code class="php">$sql->execute([$consulta]);</code>

이것은 변경은 '?'를 활용하여 실행 메소드를 통해 직접 매개변수를 전달합니다. 자리 표시자. 그러나 HTML 삽입 공격을 방어하기 위해 출력하기 전에 htmlspecialchars()를 통해 사용자 입력을 처리해야 한다는 점을 기억하십시오.

올바르게 준비된 명령문 사용을 준수하면 mysql_real_escape_string()이 필요하지 않으며 SQL 쿼리의 보안이 강화됩니다. .

위 내용은 준비된 명령문에 mysql_real_escape_string()이 여전히 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.