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);
}
?>
준비된 문의 이점
추가 고려 사항
결론
PDO의 준비된 문은 mysql_real_escape_string과 같은 함수가 필요 없이 데이터베이스 쿼리를 위한 강력하고 안전한 메커니즘을 제공합니다. 이 접근 방식을 채택하면 SQL 주입을 효과적으로 방지하고 데이터 무결성을 유지할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3