SQL-Injection

SQL-Injection-Lücken erkennen und beheben

Bildnachweis: (c) Heiko Stuckmann / pixelio.de

Die OWASP TOP 10 sieht Injection als größte Gefahr in Webanwendungen. Ein häufiger Sonderfall ist SQL-Injection. Damit können nicht nur Daten geklaut, manipuliert, hinzugefügt oder gelöscht werden. Es kann sogar genutzt werden um Kontrolle über den Server zu übernehmen.

Betrachten wir folgendes Beispiel. Über solchen Code sind wir sicherlicher schon alle gestolpert.

$query = "UPDATE users SET password = '" . $_GET['password'] . "' WHERE username = '" . $_GET['username'] . "'";

Würde dieses Query ausgeführt, würde funktionieren. Allerdings klafft hier ein großes Sicherheitsloch, denn wir akzeptieren einfach so, was wir per GET an Parametern bekommen, und senden es zur Datenbank. Es gibt eine Maxime, die hier sicherlich öfter genannt werden wird: Traue keinen Daten von fremden Quellen. Egal ob GET, POST, Cookie oder APIs. Wir vertrauen Daten die wir nicht kontrollieren niemals!

Weiterlesen