Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie können parametrisierte Abfragen in PHP vor SQL-Injection in MySQL-Datenbanken schützen?

Linda Hamilton
Freigeben: 2024-11-02 07:07:30
Original
387 Leute haben es durchsucht

How can Parameterized Queries in PHP Protect against SQL Injection in MySQL Databases?

Parametrierte Abfragen in PHP für sichere MySQL-Verbindungen

SQL-Injection bleibt eine anhaltende Sicherheitsbedrohung, die vertrauliche Daten in Datenbankanwendungen gefährden kann. Parametrisierte Abfragen sind eine entscheidende Technik zur Minderung dieses Risikos. Um sie korrekt zu implementieren, ist es jedoch erforderlich, nicht nur die Abfrage selbst, sondern auch den Datenbankverbindungsprozess zu verstehen.

Bedenken Sie den folgenden Codeausschnitt einer PHP-Anmeldeseite:

<code class="php">$query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result);</code>
Nach dem Login kopieren

Dieser Code ist anfällig für SQL-Injection, da die vom Benutzer bereitgestellten Eingaben $userName und $userPass direkt in der Abfragezeichenfolge enthalten sind.

Um parametrisierte Abfragen zu implementieren, ersetzen Sie diesen Code durch Folgendes:

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

In diesem verbesserter Code:

  • mysqli_prepare bereitet ein PDO-Anweisungsobjekt vor, das mehrmals ausgeführt werden kann.
  • mysqli_stmt_bind_param bindet die vom Benutzer bereitgestellten Eingaben an parametrisierte Platzhalter (?) in der SQL-Abfrage und verhindert so SQL-Injection.
  • mysqli_stmt_execute führt die vorbereitete Anweisung aus.
  • mysqli_stmt_fetch ruft die Ergebniszeile ab.

Denken Sie daran, Benutzerkennwörter für zusätzliche Sicherheit zu verschlüsseln oder zu hashen. Parametrisierte Abfragen sorgen zusammen mit diesen zusätzlichen Maßnahmen für sichere MySQL-Datenbankinteraktionen in Ihren PHP-Anwendungen.

Das obige ist der detaillierte Inhalt vonWie können parametrisierte Abfragen in PHP vor SQL-Injection in MySQL-Datenbanken schützen?. 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