>데이터 베이스 >MySQL 튜토리얼 >준비된 명령문에 보안을 위해 `mysql_real_escape_string()`이 필요합니까?

준비된 명령문에 보안을 위해 `mysql_real_escape_string()`이 필요합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-01 23:50:29284검색

Do Prepared Statements Need `mysql_real_escape_string()` for Security?

Prepared 문과 함께 mysql_real_escape_string 사용

질문:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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