Definition SQL Injection Was ist SQL Injection?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Peter Schmitz

SQL Injection ist eine beliebte Angriffsart auf Webanwendungen. Aufgrund von Schwachstellen in den Webanwendungen gelingt es Angreifern, unerwünschte Datenbankbefehle einzuschleusen. Möglich wird dies beispielsweise, wenn die Eingaben eines Anwenders in ein Webformular nicht ausreichend geprüft werden. Mit Hilfe der eingeschleusten Befehle lassen sich Daten unbefugt lesen, manipulieren oder löschen. Unter Umständen erlangt der Angreifer die volle Kontrolle über den Server.

Anbieter zum Thema

SQL Injection ist eine häufige Angriffsart im Web, bei der unerwünschte Datenbankbefehle eingeschleust werden.
SQL Injection ist eine häufige Angriffsart im Web, bei der unerwünschte Datenbankbefehle eingeschleust werden.
(Bild: gemeinfrei / Pixabay )

SQL Injection ist der Name einer häufig im Internet vorkommenden Angriffsart auf Webanwendungen und Datenbanken. Diese Angriffsart schleust unter Ausnutzung von Schwachstellen in den Webanwendungen unerwünschte Datenbankbefehle ein. Möglich wird dies beispielsweise, wenn die Webanwendung die Eingaben eines Anwenders in einem Webformular nicht ausreichend prüft und sogenannte Metazeichen wie Backslash oder Semikolon akzeptiert. Diese Zeichen haben eine besondere Bedeutung für den SQL-Interpreter und veranlassen diesen, die eingeschleusten Befehle auszuführen.

Gelingt es einem Angreifer, Datenbankbefehle auf diese Art einzuschleusen, ist er in der Lage, unbefugt Daten zu lesen, zu manipulieren oder zu löschen. Unter Umständen ist es sogar möglich, die komplette Kontrolle über einen Datenbankserver zu übernehmen. Da im Internet viele Webanwendungen und Content Management System ihre Inhalte dynamisch mit Hilfe von PHP-Skripten und mit den in relationalen Datenbanksystemen wie MySQL gespeicherten Daten generieren, besteht ein potentielles Risiko für SQL-Injection-Schwachstellen. Das Open Web Application Security Project (OWASP), eine Non-Profit-Organisation zur Verbesserung der Sicherheit von Anwendungen und Diensten im Internet, listet Angriffe mit SQL Injection als eines der höchsten Sicherheitsrisiken für Webanwendungen.

Die möglichen Folgen von SQL Injection

Gelingt es einem Angreifer, SQL-Befehle einzuschleusen und den Interpreter dazu zu veranlassen, diese auszuführen, hat dies unter Umständen schwerwiegende Folgen. Es lassen sich sensible Daten unbefugt auslesen, verändern, manipulieren oder löschen. In einigen Fällen ist es durch das Einschleusen von Befehlen möglich, die komplette Kontrolle über einen Datenbankserver oder weitere Systeme zu erlangen. Die durch SQL Injection erhaltenen Informationen lassen sich beispielsweise für erpresserische Zwecke oder für Betriebsspionage nutzen. Das Image eines betroffenen Unternehmens oder einer Organisation kann stark in Mitleidenschaft gezogen werden.

Die verschiedenen Arten von SQL Injection

Es existieren verschiedene Arten von SQL Injection. Eine der häufigsten Arten ist das Einschleusen der SQL-Befehle über Formularfelder für Nutzereingaben. Werden die Nutzereingaben nicht ausreichend geprüft und an den SQL-Interpreter übergeben, lassen sich eingeschleuste Befehle auf eine Datenbank und die dort gespeicherten Informationen anwenden. Das Einschleusen von SQL-Befehlen kann beispielsweise auch über manipulierte Cookies oder HTTP-Header stattfinden.

Die Schutzmaßnahmen vor SQL Injection

Wichtigste Schutzmaßnahme vor SQL Injection ist die Prüfung, Filterung und Bereinigung der Benutzereingaben. Die Eingaben dürfen nur erwartete Eigenschaften und Zeichen besitzen und keine unerlaubten Metazeichen beinhalten, die an den SQL-Interpreter übergeben werden. Eine weitere Schutzmaßnahme ist die Einschränkung der Benutzerprivilegien. Eine Webanwendung, die sich über einen Benutzer an einem Datenbankserver authentifiziert, sollte immer nur die Rechte besitzen, die sie tatsächlich benötigt (Prinzip der minimalen Berechtigungen).

Weitere Schutzmaßnahmen sind:

  • Härtung des Datenbankservers
  • Löschen nicht benötigter Benutzerkonten
  • Isolation der Benutzereingaben vom SQL-Interpreter
  • zeitnahes Einspielen von Updates und Patches
  • Nutzung von Intrusion Detection Systemen (IDS), Intrusion Prevention Systemen (IPS) und Web Application Firewalls (WAF)
  • regelmäßige Sicherheits-Scans der Webanwendungen

(ID:47387029)