MySQL 준비된 문: 이스케이프를 넘어서
수동 이스케이프는 SQL 주입을 방지하기 위한 일반적인 접근 방식이지만 오류가 발생할 수 있습니다. PDO(PHP 데이터 개체)는 표준 MySQL 내에서 강력한 대안을 제공합니다.
PDO는 모든 데이터베이스 입력이 텍스트로 처리되도록 보장하여 수동 이스케이프가 필요하지 않습니다. 데이터 표시를 위한 적절한 HTML 엔터티 인코딩과 결합된 이 접근 방식은 삽입에 대한 견고한 방어를 제공합니다.
PDO와 데이터베이스 연결을 설정하려면 다음과 같이 데이터베이스 객체를 생성하세요.
try {
$db = new PDO("mysql:host=[hostname];dbname=[database]", '[username]', '[password]');
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec('SET NAMES utf8');
} catch (PDOException $e) {
echo $e->getMessage();
}
쿼리를 준비하려면 준비 메소드를 사용하십시오:
$stmt = $db->prepare('SELECT * FROM Table WHERE id = ?');
bindParam 메서드를 사용하여 쿼리의 자리 표시자에 값을 바인딩합니다.
$stmt->bindParam(1, $id);
execute 메서드를 사용하여 쿼리를 실행합니다.
$stmt->execute();
PDO는 다양한 이점을 제공합니다:
데이터베이스 연결에는 항상 PDO를 사용하고 안전한 데이터 처리를 위해 이를 적절한 HTML 엔터티 인코딩과 결합하는 것을 기억하세요. PDO는 SQL 주입으로부터 애플리케이션을 보호하는 강력하고 효율적인 방법을 제공합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3