Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

Mary-Kate Olsen
Freigeben: 2024-10-28 06:00:03
Original
955 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage