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

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

Linda Hamilton
Linda HamiltonOriginal
2024-11-02 07:07:30343Durchsuche

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>

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>

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!

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