17.17 SQL-Injection verhindern

Problem

Sie müssen die Gefährdung Ihrer PHP-Anwendung durch SQL-Injection-Angriffe ausräumen.

Lösung

Nutzen Sie eine Datenbankbibliothek wie PDO, die die für Ihre Datenbank erforderlichen Maskierungsvorgänge übernimmt:

<?php
$db = new PDO('mysql:host=localhost;dbname=users',
              $_SERVER['DB_USER'],
              $_SERVER['DB_PASSWORD']);
$statement = $db->prepare("INSERT
                             INTO   users (username, password)
                             VALUES (:username, :password)");
$statement->bindParam(':username', $clean['username']);
$statement->bindParam(':password', $clean['password']);
$statement->execute();
$db = NULL;
?>

Diskussion

Der Einsatz gebundener Parameter sichert, dass Ihre Daten nie in einen Kontext gelangen, in dem sie als etwas anderes betrachtet werden als reine ...

Get PHP 5 Kochbuch, Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.