PDO-Äquivalent von mysql_real_escape_string()
Bei Ihrer Codemigration von mysql_* zu PDO suchen Sie nach einem Äquivalent für mysql_real_escape_string(). Es ist jedoch wichtig zu beachten, dass es in PDO kein direktes Äquivalent gibt.
Technisch gesehen existiert PDO::quote(), wird jedoch nicht häufig verwendet und ist nicht mit mysql_real_escape_string() vergleichbar.
Richtige MySQL-Injection-Prävention
Wenn Sie PDO ordnungsgemäß mit vorbereiteten Anweisungen verwenden, erhalten Sie Schutz vor MySQL-Injection. Vorbereitete Anweisungen bereinigen Ihre Eingaben und machen Funktionen wie mysql_real_escape_string() überflüssig.
Beispiel für eine sichere Datenbankabfrage mit vorbereiteten Anweisungen
Hier ist ein Beispiel für eine sichere Datenbank Abfrage mit PDO-vorbereiteten Anweisungen:
$db = new PDO( "mysql:host=localhost;dbname=xxx;charset=utf8", "xxx", "xxx", [ PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ] ); // Prepared statement $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?"); // Execute statement $stmt->execute(array($_POST['color'])); // Fetch result $cars = $stmt->fetchAll(PDO::FETCH_ASSOC);
Wie Sie sehen können, haben wir $_POST['color'] nicht maskiert oder bereinigt, dennoch bleibt der Code dank PDO und der Leistungsfähigkeit von vor MySQL-Injection geschützt Vorbereitete Anweisungen.
Zusätzliche Hinweise
Fazit
Die Verwendung vorbereiteter Anweisungen wie oben gezeigt ist immer sicherer als der Rückgriff auf mysql_*-Funktionen. Die integrierten Schutzmechanismen von PDO bieten einen robusteren und sichereren Ansatz zur Verhinderung der MySQL-Injection.
Das obige ist der detaillierte Inhalt vonSo verhindern Sie die MySQL-Injection mit PDO-vorbereiteten Anweisungen: Gibt es ein PDO-Äquivalent zu „mysql_real_escape_string()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!