In unserem Azubi-Blog erklären wir jede Woche einen Begriff aus dem ABC der IT-Security. Heute: Was ist eine SQL-Injektion?
SQL-Injektion beschreibt das Ausbeuten von Sicherheitslücken in Datenbanken, um manipulierten Code einzuschleusen. Ein anderer Begriff für SQL-Injektion ist „SQL-Einschleusung“.
Mit dem Einschleusen von SQL-Code versuchen Cyberkriminelle, Malware in echte Webseiten einzubetten. Oft tritt eine SQL-Injektion in Zusammenhang mit PHP- und ASP-Programmen auf, die auf ältere Interfaces zurückgreifen. Hier erhalten die Eingaben in einigen Fällen nicht die notwendige Maskierung und sind damit das perfekte Ziel für einen Angriff.
Durch gezielte Manipulation von Code oder Funktionszeichen der Datenbanksprache SQL schleust ein eigentlich unberechtigter Benutzer auf diese Weise weitere SQL-Befehle ein und manipuliert die Einträge derart, dass er Daten verändern, löschen oder lesen kann. In den härtesten Fällen ist es sogar möglich, dass sich ein Angreifer auf diesem Wege den Zugriff auf die Kommandozeile des befehlsausführenden Systems und damit über den gesamten Datenbankserver verschafft.
Prinzipiell ist jede Website und jede Webanwendung anfällig für eine SQL-Injektion, sofern SQL als Datenbanksprache zum Einsatz kommt. Allzu oft sorgen die Hersteller der Programme, die mit der Datenbank kommunizieren, nicht für ein ausreichendes Maß an Sicherheit. So lassen sich entdeckte Schwachstellen schnell im Internet finden. Informationsseiten präsentieren die aktuelle Sicherheitslücken und zeigen Kriminellen darüber hinaus auch gleich wie sie die Sicherheitslücke finden.
Sie können verschiedene Maßnahmen vornehmen, um SQL-Injektion-Attacken auf Ihr Datenbanksystem zu verhindern. Zuerst sollte man sich mit allen beteiligten Komponenten befassen, die sich zum Sicherheitsrisiko entwickeln könnten. Darunter zählen der Server, die einzelnen Anwendungen sowie das Datenbankmanagementsystem.
Desweiten sollte die automatische Eingabe der Applikation überwacht werden. Dies macht man durch das Prüfen und Filtern der Methoden und Parameter über die eingebundenen Applikationen, die bei der Eingabe in die Datenbank genutzt werden.
Die übergebenen Daten sollten immer in dem erwarteten Datentyp vorliegen. Ist ein numerischer Parameter gefragt, so kann dieser durch ein Skript geprüft werden.
Eine weitere Methode, um sich zu schützen, ist die Datenbank auf ein Minimum zu reduzieren. Das heißt: Nicht benötigte Funktionen abschalten.
Zudem ist es sinnvoll einen separaten Account zu haben, der getrennt von den wichtigen Daten den Zugriff aus dem Internet ermöglicht.