Beim Übergang von mysql_* zu PDO kann es zu einem Dilemma kommen, da kein direktes Äquivalent zu mysql_real_escape_string vorhanden ist.
Kein direktes Äquivalent
Technisch gesehen gibt es PDO::quote(), aber seine Verwendung ist begrenzt. Die wahre Lösung liegt in der korrekten Implementierung vorbereiteter Anweisungen.
Vorbereitete Anweisungen schützen vor Injektionen
PDO schützt bei Verwendung mit vorbereiteten Anweisungen von Natur aus vor MySQL-Injektionen ohne Bedarf an zusätzlicher Flucht. Vorbereitete Anweisungen binden Eingabeparameter an Platzhalter und verhindern so, dass böswillige Eingaben als SQL-Befehle interpretiert werden.
Beispiel: Verwendung vorbereiteter Anweisungen in PDO
Der folgende Code demonstriert eine sichere Datenbank Abfrage mit vorbereiteten Anweisungen:
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);
}
?>
Vorteile vorbereiteter Anweisungen
Zusätzliche Überlegungen
Fazit
Vorbereitete Anweisungen in PDO bieten einen robusten und sicheren Mechanismus für Datenbankabfragen, ohne dass Funktionen wie mysql_real_escape_string erforderlich sind. Durch diesen Ansatz können Sie SQL-Injections wirksam verhindern und die Integrität Ihrer Daten wahren.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3