Heim >Backend-Entwicklung >PHP-Tutorial >Bietet „mysqli_real_escape_string' vollständigen Schutz vor SQL-Injection?
Kann „mysqli_real_escape_string“ SQL-Injection vollständig verhindern?
Betrachten Sie den folgenden Beispielcode:
$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 . "')";
Ist dieser Code sicher gegen SQL-Injection und andere? Angriffe?
Antwort:Nein.
Wie in den bereitgestellten Codebeispielen hervorgehoben, reicht „mysqli_real_escape_string“ allein nicht aus, um den Schutz vor SQL-Injection zu gewährleisten . Angreifer können Schwachstellen in der Implementierung ausnutzen, um die Filterung zu umgehen und die Anwendung zu gefährden.
Empfohlene Lösung:
Der effektivste Weg, SQL-Injection zu verhindern, ist die Verwendung vorbereitete Aussagen. Vorbereitete Anweisungen isolieren Daten aus SQL-Abfragen und stellen so sicher, dass keine externen Eingaben die Abfragestruktur beeinträchtigen. Erwägen Sie außerdem die Implementierung einer strengen Whitelist, um Daten speziell für den beabsichtigten Zweck zu filtern. Dieser Ansatz minimiert das Risiko von SQL-Injection und anderen Sicherheitslücken.
Beispiel einer sicheren Abfrage mit vorbereiteten Anweisungen:
$stmt = $db->prepare( "SELECT * FROM table WHERE col = ? ORDER BY {$sortby} ASC LIMIT ?, ?" ); $stmt->execute(['value', $start, $howmany]); $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
Durch die Einbindung dieser Maßnahmen können Sie Erhöhen Sie die Sicherheit Ihrer SQL-Vorgänge erheblich vor böswilligen Angriffen.
Das obige ist der detaillierte Inhalt vonBietet „mysqli_real_escape_string' vollständigen Schutz vor SQL-Injection?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!