Aktueller Standort: Startseite> Neueste Artikel> Wie verwendet ich die Funktion real_escape_string in PHP, um SQL -Injektionsangriffe effektiv zu verhindern?

Wie verwendet ich die Funktion real_escape_string in PHP, um SQL -Injektionsangriffe effektiv zu verhindern?

gitbox 2025-06-10

Was ist real_escape_string ?

Real_escape_String ist eine Methode in der MySQLI -Erweiterung, die hauptsächlich zur Flucht von Sonderzeichen in Saiten verwendet wird, wodurch ein bösartiger SQL -Code verhindert wird, dass es ausgeführt wird. Es fügt automatisch einen Backslash ( \ ) vor gefährlichen Zeichen hinzu, was dazu führt, dass sie seine besondere Bedeutung in der SQL -Syntax verliert.

Wann müssen Sie real_escape_string verwenden?

Jede Situation, in der die Benutzereingabe direkt in SQL -Anweisungen gespleißt wird, muss dem Eingabeinhalt entkommen. Andernfalls kann ein Angreifer Eingaben verwenden, um böswillige Anweisungen zu konstruieren, wodurch die Logik der Datenbankvorgänge geändert werden.

Wie benutze ich real_escape_string richtig?

Hier ist ein einfaches Beispiel, das zeigt, wie man real_escape_string verwendet, um die Benutzereingabe sicher zu behandeln:

<Code> & lt;? php // MySQLi -Verbindung $ conn = new MySQLi ('Gitbox.net', 'Benutzername', 'Passwort', 'Datenbank') erstellen;

// Überprüfen Sie, ob die Verbindung erfolgreich ist
if ($ conn-> connect_error) {
Die ("Verbindung fehlgeschlagen:". $ conn-> connect_error);
}

// Angenommen, der Benutzer hat den Benutzernamen über das Formular eingereicht
$ user_input = $ _post ['userername'];

// Verwenden Sie real_esescape_string, um den Benutzereingang zu entkommen
$ safe_input = $ conn-> real_escape_string ($ user_input);

// SQL Query -Anweisung konstruieren
$ sql = "Select * von Benutzern, wobei userername = '$ safe_input'" ";

// Abfrage ausführen
$ result = $ conn-> query ($ sql);

if ($ result-> num_rows> 0) {
// Abfrageergebnisse verarbeiten
while ($ row = $ result-> fetch_assoc ()) {
Echo "Benutzer -ID:". $ row ["id"]. " - Benutzername:". $ row ["Benutzername"]. "<br>";
}
} anders {
echo "kein passender Benutzer gefunden";
}

$ conn-> close ();
?>
</code>

Warum kann real_escape_string die SQL -Injektion verhindern?

Real_escape_String kann Zeichen in Zeichenfolgen identifizieren, die von der SQL -Engine missverstanden werden können, wie z .

Dinge zu beachten

  1. Die Verbindung muss hergestellt worden sein : real_escape_string hängt vom Datenbankverbindungszustand ab und sollte nicht vor der Verbindung aufgerufen werden.

  2. Anwendungsbereich : Diese Funktion ist nur für die String -Flucht geeignet und kann sicherer vorbereitete Anweisungen ersetzen.

  3. Es wird empfohlen, Vorverarbeitungsanweisungen zu verwenden : Obwohl real_escape_string wirksam ist, wird empfohlen, Vorverarbeitungsanweisungen von MySQLI oder PDO für SQL -Abfragen zu verwenden, die die Sicherheits- und Code -Wartbarkeit weiter verbessern können.

  • Verwandte Tags:

    SQL