집 >데이터 베이스 >MySQL 튜토리얼 >PDO 준비 문으로 MySQL 주입을 방지하는 방법: `mysql_real_escape_string()`과 동일한 PDO가 있습니까?
mysql_real_escape_string()과 동등한 PDO
mysql_*에서 PDO로의 코드 마이그레이션에서 mysql_real_escape_string()과 동등한 PDO를 찾고 있습니다. 그러나 PDO에는 직접적으로 동등한 것이 없다는 점에 유의하는 것이 중요합니다.
기술적으로 PDO::quote()가 존재하지만 일반적으로 사용되지 않으며 mysql_real_escape_string()과 비교할 수 없습니다.
적절한 MySQL 주입 예방
PDO를 준비된 명령문과 함께 적절하게 사용하면 MySQL 주입으로부터 보호받을 수 있습니다. 준비된 문은 입력을 삭제하여 mysql_real_escape_string()과 같은 함수의 필요성을 제거합니다.
준비된 문을 사용한 보안 데이터베이스 쿼리의 예
다음은 보안 데이터베이스의 예입니다. PDO 준비된 문을 사용한 쿼리:
$db = new PDO( "mysql:host=localhost;dbname=xxx;charset=utf8", "xxx", "xxx", [ PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ] ); // Prepared statement $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?"); // Execute statement $stmt->execute(array($_POST['color'])); // Fetch result $cars = $stmt->fetchAll(PDO::FETCH_ASSOC);
보시다시피 $_POST['color']를 이스케이프하거나 삭제하지 않았지만 코드는 PDO 및 강력한 기능 덕분에 MySQL 주입으로부터 안전하게 유지됩니다. 준비된 문입니다.
추가 참고 사항
결론
위에서 설명한 대로 준비된 문을 사용하는 것이 mysql_* 함수를 사용하는 것보다 항상 더 안전합니다. PDO에 내장된 보호 메커니즘은 MySQL 주입을 방지하는 보다 강력하고 안전한 접근 방식을 제공합니다.
위 내용은 PDO 준비 문으로 MySQL 주입을 방지하는 방법: `mysql_real_escape_string()`과 동일한 PDO가 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!