Heim >Datenbank >MySQL-Tutorial >Wie schützen parametrisierte Abfragen vor SQL-Injection?
Verwendung parametrisierter Abfragen für sichere Datenbankinteraktion
SQL-Injection stellt nach wie vor eine erhebliche Sicherheitsbedrohung dar und ermöglicht es Angreifern, böswillige Abfragen mithilfe von Benutzereingaben auszuführen . Um Ihre Website zu schützen, bieten parametrisierte Abfragen eine robuste Lösung. Ihre Integration erfordert jedoch eine ordnungsgemäße Handhabung der Datenbankverbindung.
Betrachten Sie diesen Beispiel-Anmeldeseitencode:
<code class="php">$userName = $_POST["username"]; $userPass = $_POST["password"]; $query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'"; $result = mysqli_query($dbc, $query); //$dbc is for MySQL connection: $dbc = @mysqli_connect($dbhost, $dbuser, $dbpass, $db) $row = mysqli_fetch_array($result); if(!$row){ echo "No existing user or wrong password."; }</code>
Implementieren parametrisierter Abfragen:
Zur Vermeidung SQL-Injection, ersetzen Sie diesen Code durch:
<code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?"); mysqli_stmt_bind_param($stmt, "ss", $userName, $userPass); mysqli_stmt_execute($stmt); $row = mysqli_stmt_fetch($stmt);</code>
Verbindungsbehandlung:
Im Originalcode wird die Verbindung zur Datenbank mit mysqli_connect() hergestellt. Dies muss vor der Ausführung von Abfragen erfolgen. Stellen Sie sicher, dass Sie über einen gültigen $dbc verfügen, bevor Sie fortfahren.
Bewährte Sicherheitspraktiken:
Das obige ist der detaillierte Inhalt vonWie schützen parametrisierte Abfragen vor SQL-Injection?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!