Ersetzen von mysql_*-Funktionen durch PDO und vorbereitete Anweisungen
Das Problem:
Traditionell PHP-Entwickler verwendeten die mysql_*-Funktionen für die Datenbankkonnektivität und Datenmanipulation. Diese Funktionen gelten jedoch als ungesichert und anfällig für verschiedene Angriffe.
PDO und Prepared Statements:
PDO (PHP Data Objects) ist eine standardisierte Schnittstelle für die Datenbankinteraktion, bietet mehr Sicherheit und Flexibilität. Vorbereitete Anweisungen, eine Funktion in PDO, ermöglichen parametrisierte Abfragen, die SQL-Injection-Angriffe wirksam verhindern.
Vorteile der Verwendung von PDO und vorbereiteten Anweisungen:
Verbinden mit die Datenbank mit PDO:
$host = 'host'; $user = 'user'; $pass = 'password'; $database = 'database'; try { $dbh = new PDO("mysql:host=$host;dbname=$database", $user, $pass); } catch (PDOException $e) { echo "Unable to connect: " . $e->getMessage(); exit; }
Vorbereiten und Ausführen einer Abfrage mit vorbereiteten Anweisungen:
So rufen Sie einen Benutzer anhand der ID mithilfe vorbereiteter Anweisungen ab:
$user_id = $_GET['id']; $stmt = $dbh->prepare("SELECT * FROM `users` WHERE `id` = :user_id"); $stmt->bindParam(':user_id', $user_id, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetchAll();
Ähnlich zum Einfügen von Daten mit vorbereiteten Anweisungen:
$username = $_POST['username']; $email = $_POST['email']; $stmt = $dbh->prepare("INSERT INTO `users` (username, email) VALUES (?, ?)"); $stmt->bindParam(1, $username, PDO::PARAM_STR); $stmt->bindParam(2, $email, PDO::PARAM_STR); $stmt->execute();
Sicherheitsüberlegungen:
Vorbereitete Anweisungen bieten inhärente Sicherheit gegen SQL-Injection durch Trennung Daten aus Abfragen. Es ist jedoch von entscheidender Bedeutung, Eingabedaten ordnungsgemäß zu verarbeiten, um andere Schwachstellen wie Cross-Site-Scripting (XSS) oder Cross-Site-Request-Forgery (CSRF) zu verhindern.
Das obige ist der detaillierte Inhalt vonWarum sollte ich mysql_*-Funktionen durch PDO und vorbereitete Anweisungen ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!