Heim >Datenbank >MySQL-Tutorial >Reicht „mysqli_real_escape_string' aus, um SQL-Injection zu verhindern?
Frage:
Im bereitgestellten PHP Ist die Verwendung von mysqli_real_escape_string ausreichend, um SQL-Injection zu verhindern? Angriffe?
$email= mysqli_real_escape_string($db_con,$_POST['email']); $psw= mysqli_real_escape_string($db_con,$_POST['psw']); $query = "INSERT INTO `users` (`email`,`psw`) VALUES ('".$email."','".$psw."')";
Antwort:
Nein, sich allein auf mysqli_real_escape_string zu verlassen, reicht nicht aus, um SQL-Injection und andere SQL-Angriffe zu verhindern.
Vorbereitet -Anweisungen bieten eine robustere Lösung zur Verhinderung der SQL-Injection. Sie trennen Daten und Anweisungen und stellen so sicher, dass vom Benutzer bereitgestellte Eingaben die Struktur der Abfrage nicht beeinträchtigen.
In Situationen, in denen vorbereitete Anweisungen nicht verwendet werden können, kann die Implementierung einer strengen Whitelist für bestimmte Zwecke einen gewissen Schutz bieten. Dazu gehört die Definition einer vorgegebenen Liste akzeptabler Werte für jeden Parameter, um böswillige Eingaben zu verhindern.
Beispiel für die Verwendung einer Whitelist und Typumwandlung:
switch ($sortby) { case 'column_b': case 'col_c': // Safe to use break; default: $sortby = 'rowid'; } $start = (int) $start; $howmany = (int) $howmany; if ($start < 0) { $start = 0; } if ($howmany < 1) { $howmany = 1; } // Execute the query using prepared statements $stmt = $db->prepare( "SELECT * FROM table WHERE col = ? ORDER BY {$sortby} ASC LIMIT {$start}, {$howmany}" ); $stmt->execute(['value']); $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
Es muss unbedingt sichergestellt werden, dass vorbereitete Anweisungen verwendet werden Emulierte Vorbereitungen sind deaktiviert, insbesondere bei Verwendung von MySQL.
$db->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
Das obige ist der detaillierte Inhalt vonReicht „mysqli_real_escape_string' aus, um SQL-Injection zu verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!