mysql_*에서 PDO로 마이그레이션할 때 사용자 입력을 피하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-26 12:51:03
원래의
494명이 탐색했습니다.

 How to Escape User Input When Migrating from mysql_* to PDO?

mysql_real_escape_string과 동등한 PDO

질문:

mysql_*에서 PDO로 마이그레이션할 때, mysql_real_escape_string 함수?

답변:

mysql_real_escape_string과 달리 PDO는 준비된 문을 사용하여 자동 이스케이프를 수행합니다. 준비된 문은 사용자 입력을 SQL 쿼리에 직접 삽입하는 대신 자리 표시자(예: ?)를 사용하여 SQL 삽입 취약점을 방지합니다.

예:

<code class="php">try {
    $db = new PDO(...);
} catch (PDOException $e) {
    echo "Error connecting to mysql: " . $e->getMessage();
}

if (isset($_POST['color'])) {
    $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?");
    $stmt->execute([$_POST['color']]);

    $cars = $stmt->fetchAll(\PDO::FETCH_ASSOC);
    var_dump($cars);
}</code>
로그인 후 복사

이 예에서는 , $_POST['color']는 준비된 문의 매개변수로 전달되어 쿼리 삽입을 방지합니다.

추가 참고 사항:

  • 항상 포함 보안을 위해 PDO 연결 DSN의 charset=utf8.
  • 예외에 대한 PDO 오류 모드(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)를 활성화하여 데이터베이스 오류를 적절하게 처리합니다.
  • 주의하세요 오래된 MySQL 버전(MySQL < 5.3.6)을 사용하는 경우 추가적인 예방 조치가 필요할 수 있습니다.
  • PDO 및 SQL 주입 방지에 대한 자세한 내용은 아래 리소스를 참조하세요.

추가 자료:

  • MySQL 개발자를 위한 PDO 튜토리얼

위 내용은 mysql_*에서 PDO로 마이그레이션할 때 사용자 입력을 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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