Akamai dots background

Tutorial zu SQL-Injection

Dieses Tutorial zu SQL-Injection bietet eine kurze Einführung in eine der am weitesten verbreiteten Bedrohungen der Web-Sicherheit für Unternehmen und öffentliche Organisationen. Im Tutorial zu SQL-Injection werden die folgenden vier Themen behandelt:

  • Kontext von SQL-Injection-Angriffen
  • Ziele von SQL-Injection-Angriffen
  • Funktionsweise von SQL-Injection
  • Möglichkeiten zum Schutz vor SQL-Injection-Angriffen

Tutorial zu SQL-Injection – 1. Thema: Kontext von SQL-Injection-Angriffen

Die meisten modernen Web-Anwendungen weisen dieselbe Grundstruktur und denselben logischen Ablauf auf: Ein Web-Client (in der Regel ein Browser) kommuniziert mit einer Web-Anwendung, die auf einem Web-Server gehostet ist, und die Web-Anwendung wiederum kommuniziert mit einer oder mehreren Backend-Datenbanken. In den Datenbanken werden zahlreiche Informationen wie Kombinationen aus Nutzername und Kennwort und Nutzerkontodaten gespeichert, die für die Anwendung relevant sind. Endnutzer greifen auf diese Informationen zu und ändern sie, indem sie Einträge in Formularen auf einer Website vornehmen (z. B. in Anmeldeformularen oder Suchformularen). Basierend auf dieser Nutzereingabe sendet die Web-Anwendung Befehle an die Datenbanken. Dabei wird in der Regel mit der Structured Query Language (SQL) die Befehlssprache der meisten modernen relationalen Datenbanken verwendet. Sobald die Datenbank geantwortet hat, antwortet die Web-Anwendung dem Nutzer.

Tutorial zu SQL-Injection – 2. Thema: Ziele von SQL-Injection-Angriffen

Bei einem SQL-Injection-Angriff schleust ein in SQL-Syntax sehr versierter Hacker über Formulare in Webseiten fingierte Einträge mit dem Ziel ein, einen direkteren und weitreichenderen Zugriff auf die Backend-Datenbank zu erlangen, als durch die Web-Anwendung beabsichtigt ist. In den meisten Fällen wird mit solchen Angriffen versucht, wertvolle Informationen wie Kombinationen aus Nutzername und Kennwort oder vertrauliche Finanz- oder Unternehmensdaten abzurufen. In einigen Fällen kann durch einen SQL-Injection-Angriff auch versucht werden, Daten (z. B. einen Kontostand) zu ändern oder zu löschen. Auf diese Weise können SQL-Injection-Angriffe schwerwiegende Verletzungen der Cyber-Sicherheit zur Folge haben.

Tutorial zu SQL-Injection – 3. Thema: Funktionsweise von SQL-Injection

Für einen SQL-Injection-Angriff gibt ein Hacker spezielle SQL-Begriffe und Zeichen in ein Eingabefeld in einem Web-Formular ein, um die Anwendung dazu zu bringen, andere Befehle als normalerweise an die Datenbank zu senden. Zur vereinfachten Darstellung (abgeleitet von einem Beispiel auf der OWASP-Website (Open Web Application Security Project)) wird ein Fall angenommen, in dem Anwendungscode mit der Absicht geschrieben wurde, den folgenden Befehl für eine Datenbank auszuführen:

---------------

SELECT * FROM accounts

WHERE owner =

AND accountname = ;

---------------

Mit diesem Befehl sollen Kontoinformationen aus der Tabelle „accounts“ abgerufen werden, aber nur, wenn sich der angegebene Name des Eigentümers und der Kontoname in der Tabelle im selben Eintrag befinden. Die zu überprüfenden Namen von Eigentümer und Konto würden von einem Endnutzer über ein Formular auf einer Webseite eingegeben werden.

Ein Angreifer kann im Web-Formular einen fingierten Eigentümernamen und den Kontonamen mit „'name' OR 'x'='x'“ eingeben. Wenn die Anwendung über keinen ausreichenden Schutz vor SQL-Injection verfügt, wirken sich die Verwendung der einfachen Anführungszeichen und von OR so aus, dass der folgende geänderte SQL-Befehl an die Datenbank gesendet wird:

---------------

SELECT * FROM accounts

WHERE owner = 'smith'

AND accountname = 'name' OR 'x' = 'x';

---------------

Die in der Regel restriktive WHERE-Klausel wird dadurch für alle Datensätze in der Tabelle „accounts“ erfüllt, da die Kombination „smith/name“ für Eigentümer und Konto zwar nicht gefunden werden kann, der OR-Teil der Klausel – also 'x'='x' – jedoch immer wahr ist. Daraufhin werden alle Datensätze aus der Tabelle an die Anwendung und weiter an den Endnutzer zurückgegeben.

Tutorial zu SQL-Injection – 4. Thema: Möglichkeiten zum Schutz vor SQL-Injection-Angriffen

In diesem Tutorial zu SQL-Injection wurden die Ziele und grundlegenden Strategien von SQL-Injection-Angriffen kurz vorgestellt. Für Betreiber von Web-Anwendungen stellt sich vor diesem Hintergrund die entscheidende Frage, wie solche Angriffe abgewehrt werden können. Hierfür gibt es zwei allgemeine Ansätze:

  • Sorgfältige Anwendungscodierung. Durch die Berücksichtigung bewährter Methoden bei der Programmierung kann die Anfälligkeit einer Web-Anwendung für SQL-Injection erheblich gesenkt werden. Dazu gehören die Verwendung parametrisierter Abfragen oder gespeicherter Prozeduren oder die Verwendung von Blacklists oder Whitelists, um Nutzereingaben in Web-Formularen zu filtern und zu bereinigen. Sich vollständig auf gute Programmierer zu verlassen, ist jedoch nur selten ausreichend für die Gewährleistung von Web-Dienst-Sicherheit und Datenschutz. Dies liegt zum Teil daran, dass die meisten Web-Anwendungen das Werk vieler verschiedener Programmierer sind, die über einen längeren Zeitraum daran gearbeitet haben, und teilweise daran, dass das Nachbessern vorhandener Web-Anwendungen mit bekannten Schwachstellen sehr kostspielig sein kann.
  • Platzieren einer Web Application Firewall (WAF) vor der Web-Anwendung, um eingehenden HTTP-Datenverkehr zu prüfen und zu filtern. Eine WAF kann einen effektiven Schutz vor SQL-Injection bieten, aber herkömmliche WAFs vor Ort können schnell zu einem Performance-Engpass werden.

Die cloud-basierten Web Security Solutions von Akamai integrieren eine WAF in das globale Akamai-Netzwerk zur Bereitstellung von Web-Inhalten. Diese Lösung bietet einen weit verbreiteten, vorausschauenden Schutz vor SQL-Injection-Angriffen, ohne die Performance Ihrer Web-Anwendung zu beeinträchtigen. Die Lösung schützt auch vor der immer beliebter werdenden Strategie gleichzeitiger Denial-of-Service- und SQL-Injection-Angriffe auf Websites.

Erfahren Sie mehr über die hoch skalierbaren, cloud-basierten Cloud Security Solutions von Akamai.