Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Werden PDO-Anweisungen automatisch maskiert?

Nur vorbereitete Anweisungen bieten automatisches Entkommen, vorausgesetzt, Sie haben keine Hässlichkeit wie magische Anführungszeichen aktiviert. Und nur die Daten in den Parametern werden maskiert, nicht alles, was sich bereits in der SQL-Zeichenfolge befindet, wenn Sie die Anweisung vorbereiten.

Wenn Sie die Vorteile des automatischen Escapings nutzen möchten, müssen Sie eine Erklärung erstellen und ihr die Daten separat zuführen.

$sth = $dbh->prepare("SELECT * FROM users WHERE username=? AND password=?");
$sth->execute(array($username, $password));

Andernfalls erhalten Sie wenig bis gar keinen Schutz über mysqli_query und Freunde. (Ich weigere mich, es auch nur zu erwähnen mysql_query , weil kein anständiger PHP-Programmierer es mehr verwendet. Oh, warte ... verdammt. Nun, das ist die einzige Erwähnung hier.)