"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PDO에서 mysql_real_escape_string을 바꾸는 방법: 해결책으로 준비된 명령문?

PDO에서 mysql_real_escape_string을 바꾸는 방법: 해결책으로 준비된 명령문?

2024년 10월 31일에 게시됨
검색:188

How to Replace mysql_real_escape_string in PDO: Prepared Statements as the Solution?

PDO에서 mysql_real_escape_string 교체

mysql_*에서 PDO로 전환하는 과정에서 mysql_real_escape_string과 직접적으로 동등한 것이 없어서 딜레마에 직면할 수 있습니다.

직접 등가물 없음

기술적으로 PDO::quote()가 있지만 사용이 제한됩니다. 진정한 해결책은 준비된 문을 올바르게 구현하는 것입니다.

준비된 문은 주입으로부터 보호합니다.

PDO는 준비된 문과 함께 사용할 때 본질적으로 MySQL 주입을 방지합니다. 추가 탈출이 필요합니다. 준비된 문은 입력 매개 변수를 자리 표시자에 바인딩하여 악의적인 입력이 SQL 명령으로 해석되는 것을 방지합니다.

예: PDO에서 준비된 문 사용

다음 코드는 보안 데이터베이스를 보여줍니다. 준비된 문을 사용하여 쿼리:

 false,
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
if ($_POST && isset($_POST['color'])) {
    $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?");
    $stmt->execute(array($_POST['color']));
    $cars = $stmt->fetchAll(\PDO::FETCH_ASSOC);
    var_dump($cars);
}
?>

준비된 문의 이점

  • 입력 자동 이스케이프
  • SQL 주입 방지
  • 향상된 보안 및 성능

추가 고려 사항

  • 보안을 강화하려면 DSN 속성에 charset=utf8을 사용하세요.
  • PDO 예외 활성화(PDO ::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)를 사용하여 오류를 처리합니다.
  • 오래된 MySQL 버전(mysql

결론

PDO의 준비된 문은 mysql_real_escape_string과 같은 함수가 필요 없이 데이터베이스 쿼리를 위한 강력하고 안전한 메커니즘을 제공합니다. 이 접근 방식을 채택하면 SQL 주입을 효과적으로 방지하고 데이터 무결성을 유지할 수 있습니다.

최신 튜토리얼 더>

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

Copyright© 2022 湘ICP备2022001581号-3