SQL Injections

Werbung
Quelle: xkcd.com
SQL Injections
Fallstudie
Mögliche Angriffe
SELECT Passwort FROM Benutzer
WHERE Benutzername = '';
DROP TABLE Benutzer;
-- '
Happy Hacking
• Fallstudie auf
– http://cwach.de/sqlinject/form.html
• Ziel: Überwinden der Anmeldung
• mysql_query() erlaubt nur eine Anfrage.
– D.h. die ‘; Angriffe funktionieren nicht
– Man muss die codierte Anfrage geschickt
manipulieren
„Sanitize your inputs“
Funktionen zur Behandlung von Variablen
http://www.php.net/manual/de/ref.var.php
is_numeric()
is_int()
intval()
Benutzereingaben überprüfen
und bereinigen
Gefährliche Zeichen in Zeichenketten escapen
mysql_real_escape_string()
$user = mysql_real_escape_string($_POST["user"]);
Weitere Maßnahmen
• Rechte des Datenbankbenutzers einschränken
• Keine Fehler oder Debug Ausgaben
• Verwendung von Bibliotheken
– Prepared Statements (z.B. mysqli)
– Objekt-Relational-Mapper (z.B. propel)
Herunterladen