MySQL: SQL-Injektion verhindern

Ein sicherer Ansatz gegen SQL-Injektion, das unerlaubte Einfügen von SQL-Kommandos über Formularfelder, sind “Prepared Statements”. Die gibt es ab MySQL 4.1. Dabei muss von PHP aus der Zugriff über die neue MySQL-Schnittstelle oder dem PDO-Aufsatz erfolgen. Bei Prepared Statements wird das Absetzen eines SQL-Befehls an den Server in zwei Schritte aufgeteilt. Zuerst erfolgt das Senden des Befehls mit allen variablen Bestandteilen. Dann bindet man die gewünschten PHP-Variablen an die Platzhalter im SQL-Befehl und führt schließlich das Kommando aus:

<?php

$stmt = mysqli_prepare($link, “SELECT password FROM user

WHERE name=?”)

mysqli_stmt_bind_param($stmt, “s”, $name);

mysqli_stmt_execute ($stmt);

//… nun die Daten abfragen …

?>

Bei dieser Methode wird der SQL-Befehl im Server vorkompiliert und nach dem Setzen der variablen Teile ausgeführt. Durch die Vorkompilierung steht das Grundgerüst fest, der Befehl kann also durch keine trickreiche Wahl des Parameters manipuliert werden. Allerdings ist diese Methode aufwändiger zu formulieren als der normale Weg.

Ähnliche Beiträge

    None Found