Heim >Backend-Entwicklung >PHP-Tutorial >Bietet „mysqli_real_escape_string' vollständigen Schutz vor SQL-Injection?

Bietet „mysqli_real_escape_string' vollständigen Schutz vor SQL-Injection?

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 03:02:13643Durchsuche

Does `mysqli_real_escape_string` Offer Complete Protection Against 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn