SQL Injection

Datenbanksicherheit ist ein essentielles Thema und bezeichnet die Sicherheit vor unauthorisiertem Zugriff auf geschützte Datenbanksysteme sowie der Schutz deren Daten vor Manipulation, Missbrauch oder Löschung. Ein einfach auszuführender, aber ebenso einfach zu vermeidender Angriff auf Datenbanken ist die SQL Injection.

Die SQL Injection ist eine weit verbreitete und gefährliche Sicherheitslücke auf Webseiten, welche mit SQL-Datenbanken kommunizieren und ein Benutzer-Interface aufweisen. Jedes öffentlich zugängliche Eingabefeld auf einer Webseite, wie z.B. eine Loginmaske, ein Kontaktformular, aber auch die Adresszeile des Internetbrowsers stellt eine Einladung für Hacker dar, auf diesem Wege unerwünschten SQL Injection Code einzuschleusen und somit die hinter der Webseite liegenden Datenbanken auszuspionieren, darin enthaltene Daten zu löschen oder zu manipulieren.

Es ist jedoch nicht schwierig, hier Abhilfe zu schaffen. Voraussetzung für eine erfolgreiche Abwehr von SQL Injection ist eine durchdachte Programmierung der Webseite. Dynamisches SQL sollte nur benutzt werden, wenn unbedingt notwendig. Es kann fast immer durch gebundene Parameter in vorbereiteten Anweisungen (Prepared Statemants) ersetzt werden. Dies bedeutet, dass kein Code interpretiert, sondern nur Platzhalter übergeben werden, wodurch eine Einschleusung von Hackercode vermieden wird. Des weiteren sollten im User-Input sämtliche Metazeichen maskiert werden. Hierbei werden die unzulässigen Zeichen, wie z.B. Hochkommas oder Prozentzeichen, wie sie nur in SQL Injection Code, nicht aber in normalen User-Eingaben vorkommen, herausgefiltert. Die Programmiersprache PHP stellt zum Maskieren von Eingaben die sogenannte Escape-Funktion bereit.

Wir zum Beispiel MySQL als Datenbankmanagement System verwendet, so kann der MYSQL Query Browser nach einem Angriff dazu verwendet werden unregelmäßigkeiten in einer Datenbank zu finden. Bei Webseiten, die Opfer eines Angriffes geworden sind, müssen außer der Datenbank auch der Quellcode der Webseite auf Schadcode geprüft und eventuell bereinigt werden.

Ein Datenbanksystem ist umso anfälliger, je komplexer es ist. Funktionen, die nicht benötigt werden und das System nur unnötig belasten, indem sie es angreifbarer machen, sollten deaktiviert oder entfernt werden, so z.B. die Prozedur xd_cmdshell, welche einem möglichen Angreifer Zugriff zur Befehls-Shell ermöglicht. Umstrittene Maskier-Befehle wie addSlashes und magic_quotes sollten vermieden werden, da sie nur eine trügerische Sicherheit gegen eine SQL Injection bieten.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *