Heim >Datenbank >MySQL-Tutorial >Wie schützen parametrisierte Abfragen in PHP vor SQL-Injection?

Wie schützen parametrisierte Abfragen in PHP vor SQL-Injection?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-28 06:00:03961Durchsuche

How do Parameterized Queries in PHP Protect Against 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:

  • mysqli_prepare() bereitet eine parametrisierte Anweisung mit Platzhaltern (?) vor, die die Parameter darstellen.
  • mysqli_stmt_bind_param() bindet die Werte an die Platzhalterparameter.
  • mysqli_stmt_execute() führt die parametrisierte Anweisung aus.
  • mysqli_stmt_fetch() ruft die Ergebniszeilen ab.

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!

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