Heim >Datenbank >MySQL-Tutorial >Wie schützen parametrisierte Abfragen in PHP vor SQL-Injection?
Parametrierte Abfragen in PHP mit MySQL-Verbindung
Im Bereich der Webentwicklung stellt SQL-Injection eine erhebliche Sicherheitsbedrohung dar. Durch das Erstellen bösartiger Abfragen können Angreifer Authentifizierungsmechanismen umgehen und auf sensible Daten zugreifen. Parametrisierte Abfragen bieten eine narrensichere Lösung für diese Schwachstelle.
Betrachten wir einen Codeausschnitt aus einer PHP-Anmeldeseite, der keinen Schutz vor SQL-Injection bietet:
<code class="php">$userName = $_POST["username"]; $userPass = $_POST["password"]; $query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'"; $result = mysqli_query($dbc, $query); $row = mysqli_fetch_array($result); if (!$row) { echo "No existing user or wrong password."; }</code>
Um parametrisierte Abfragen zu verwenden, Wir müssen eine Verbindung zur Datenbank herstellen und eine parametrisierte Anweisung vorbereiten. Der folgende Code stellt ein modifiziertes Beispiel dar:
<code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?"); mysqli_stmt_bind_param($stmt, "s", $userName); mysqli_stmt_bind_param($stmt, "s", $userPass); mysqli_stmt_execute($stmt); $row = mysqli_stmt_fetch($stmt);</code>
Hier ist eine Aufschlüsselung des Codes:
In dieser parametrisierten Abfrage verhindern die Platzhalter das Einschleusen schädlicher Eingaben, da sie durch gebundene Werte ersetzt werden. Darüber hinaus ist es wichtig, Passwörter zu verschlüsseln oder zu hashen, um die Sicherheit zu erhöhen und die Speicherung von Klartext-Passwörtern zu vermeiden. Durch die Einführung parametrisierter Abfragen können PHP-Entwickler ihre Webanwendungen effektiv vor SQL-Injection-Angriffen schützen.
Das obige ist der detaillierte Inhalt vonWie schützen parametrisierte Abfragen in PHP vor SQL-Injection?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!