Tutorials » Formulare absichern: Verwendung von Prepared Statements oder Parameterized Queries

Verwendung von Prepared Statements oder Parameterized Queries

Wenn du Daten in eine Datenbank einfügst, verwende Prepared Statements oder Parameterized Queries, um SQL-Injection-Angriffe zu verhindern. Diese Techniken sorgen dafür, dass Benutzereingaben korrekt als Daten behandelt werden und nicht als Teil des SQL-Codes interpretiert werden.

Hier ist ein einfaches Beispiel für die Verwendung von Prepared Statements in PHP mit PDO (PHP Data Objects), einer gängigen Methode zur Datenbankanbindung in PHP:

Code anklicken zum kopieren

// Verbindung zur Datenbank herstellen (Beispiel mit MySQL)
$dsn = 'mysql:host=localhost;dbname=meineDatenbank';
$username = 'meinBenutzername';
$password = 'meinPasswort';

try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die('Verbindung fehlgeschlagen: ' . $e->getMessage());
}

// Beispielabfrage mit einem Parameter
$sql = "SELECT * FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);

// Binden des Parameters
$id = 123;
$stmt->bindParam(':id', $id, PDO::PARAM_INT);

// Ausführen der Abfrage
$stmt->execute();

// Ergebnisse abrufen
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Beispiel für die Verwendung der Ergebnisse
foreach ($results as $row) {
echo $row['name'] . "<br>";
}

Code anklicken zum kopieren

In diesem Beispiel wird eine Verbindung zur Datenbank hergestellt und ein vorbereitetes Statement für die Abfrage "SELECT * FROM users WHERE id = :id" erstellt. Der Parameter :id wird in der Abfragevorlage als Platzhalter verwendet.

Dann wird der Parameter mit bindParam() an den Wert 123 gebunden. Dadurch wird sichergestellt, dass der Wert als Integer behandelt wird und mögliche SQL-Injection-Angriffe verhindert werden.

Schließlich wird die Abfrage mit execute() ausgeführt und die Ergebnisse mit fetchAll() abgerufen. In diesem Beispiel werden die Ergebnisse dann einfach in einer Schleife durchlaufen und der Name jedes Benutzers ausgegeben.

Dies ist ein grundlegendes Beispiel, und je nach Anwendungsfall und den spezifischen Abfragen müssen möglicherweise weitere Schritte durchgeführt werden, z. B. das Binden von mehreren Parametern oder das Verwenden unterschiedlicher PDO-Fetch-Methoden.


Zurück Weiter


Kommentare

Möchtest du etwas zu diesem Tutorial sagen?