6 Expertentipps zur Abwehr und Vermeidung von SQL-Injection

SQL-Injection-Angriffe (SQLi) nutzen Schwachstellen in Anwendungen aus, indem sie Schadcode einschleusen. Erfahren Sie anhand unserer Expertentipps, wie Sie Ihr Unternehmen vor diesen Angriffen schützen können.

Verfasst von
Kihara Kimachia
Kihara Kimachia
Feb 17, 2023
7 minute read
SQL (Structured Query Language) code on computer monitor with Database and server room background. Example of SQL code to query data from a database

.

Enterprise Networking Planet Inhalte und Produktempfehlungen sind redaktionell unabhängig. Wir können Geld verdienen, wenn Sie auf Links zu unseren Partnern klicken. Mehr erfahren

SQL-Injection (SQLi) zählt zu den schwerwiegendsten Sicherheitsbedrohungen für moderne Webanwendungen. Sie ermöglicht es böswilligen Benutzern, Schadcode in eine Datenbank einzuschleusen, um auf vertrauliche Informationen zuzugreifen, Daten zu ändern oder zu löschen oder sogar die Kontrolle über das gesamte System zu übernehmen. Daher sind Kenntnisse und ein Bewusstsein dafür, wie SQLi-Angriffe funktionieren und wie sie verhindert werden können, für die Absicherung jeder modernen Webanwendung unerlässlich.

Was ist ein SQL-Injection-Angriff?

Ein SQL-Injection-Angriff ist das Einschleusen von Schadcode, der Schwachstellen in Anwendungen ausnutzt. Bei Erfolg kann dieser Angriff Cyberkriminellen Folgendes ermöglichen:

  • Zugriff auf vertrauliche Daten
  • Administrationsaufgaben in der Datenbank durchführen
  • Datenbankinformationen ändern
  • Dateien aus dem System wiederherstellen

In einigen Fällen können Angreifer sogar Befehle an das zugrunde liegende Betriebssystem der Datenbank senden. Datenbankadministratoren müssen sich dieser Bedrohungen bewusst sein und proaktive Maßnahmen ergreifen, um ihre Anwendungen vor solchen Angriffen zu schützen.

Wie funktioniert ein SQLi-Angriff?

SQLi-Angriffe funktionieren, indem Schadcode in die SQL-Abfragen (Structured Query Language) einer Anwendung eingeschleust wird. Solche Angriffe werden möglich, wenn eine Website oder Webanwendung Benutzereingaben nicht ordnungsgemäß validiert, bevor der Server sie verarbeitet. Durch das Ausnutzen bestimmter Schwachstellen in der Anwendung können Angreifer Zugriff auf geschützte Bereiche der Datenbank erlangen oder vorhandene Daten ändern.

Die Auswirkungen eines SQLi-Angriffs

Erfolgreiche SQLi-Angriffe können schwerwiegende Folgen für Organisationen jeder Größe haben. Angreifer können möglicherweise Zugangsdaten stehlen und auf Datenbanken mit vertraulichen Kundeninformationen wie Kreditkartennummern, Sozialversicherungsnummern oder anderen personenbezogenen Daten zugreifen. Sie können möglicherweise auch vorhandene Daten ändern oder löschen, um den Dienst zu stören oder Datensätze zum eigenen finanziellen Vorteil zu manipulieren. Darüber hinaus können Angreifer diese Angriffe als Teil einer umfassenderen Kampagne zur lateralen Bewegung innerhalb eines Netzwerks nutzen.

Advertisement

6 Expertentipps zur Abwehr von SQLi

Das Open Web Application Security Project (OWASP) bietet in seinem Leitfaden zur Vermeidung von SQL-Injection. Die darin genannten primären und sekundären Abwehrmaßnahmen – darunter die Verwendung vorbereiteter Anweisungen und gespeicherter Prozeduren sowie die Validierung von Eingaben anhand einer Allowlist – werden im Folgenden zusammengefasst.

Primäre Abwehrmaßnahme 1: Verwendung vorbereiteter Anweisungen (mit parametrisierten Abfragen)

Die Verwendung vorbereiteter Anweisungen mit Variablenbindung (auch als parametrisierte Abfragen bezeichnet) sollte die erste Verteidigungslinie zur Eindämmung von SQL-Injections sein. Bei diesem Programmierstil definieren Entwickler zunächst den gesamten SQL-Code und übergeben anschließend jeden Parameter an die Abfrage. Dadurch kann die Datenbank unabhängig von der verwendeten Benutzereingabe zwischen Code und Daten unterscheiden.

Der Vorteil vorbereiteter Anweisungen besteht darin, dass sie verhindern, dass Angreifer die Absicht einer Abfrage verändern, selbst wenn sie böswillige SQL-Befehle einschleusen. Zudem erleichtert die übersichtlichere Struktur dieser Abfragen Entwicklern die Arbeit im Vergleich zu dynamischen Abfragen.

Primäre Abwehrmaßnahme 2: Verwendung ordnungsgemäß erstellter gespeicherter Prozeduren

Gespeicherte Prozeduren sind SQL-Codeabschnitte, die in der Datenbank gespeichert und ausgeführt werden. Dadurch verringert sich die Notwendigkeit, SQL-Code in die Anwendungsschicht einzubetten. Gespeicherte Prozeduren können außerdem so eingerichtet werden, dass sie Benutzereingaben akzeptieren, wodurch der Aufwand für die Validierung von Benutzereingaben innerhalb der Anwendung sinkt.

Bei der Eindämmung von SQLi-Risiken ist es wichtig, ordnungsgemäß erstellte gespeicherte Prozeduren zu verwenden. Zwar sind nicht alle gespeicherten Prozeduren immun gegen Ausnutzung, doch der Einsatz standardisierter Programmierkonstrukte für gespeicherte Prozeduren, die SQL-Anweisungen automatisch parametrisieren, kann einen sehr wirksamen Schutz vor potenziellen Angriffen bieten.

Die Verwendung vorbereiteter Anweisungen und gespeicherter Prozeduren führt letztlich zum gleichen Ergebnis – einem erfolgreichen Schutz vor ausnutzenden SQLi-Versuchen –, sofern der Entwickler auf eine solide Erstellung und Ausführung achtet.

Advertisement

Primäre Abwehrmaßnahme 3: Validierung von Eingaben anhand einer Allowlist

Viele Bestandteile von SQL-Abfragen sind nicht für die Verwendung von Bindungsvariablen vorgesehen, etwa Tabellen- oder Spaltennamen sowie Sortierreihenfolge-Indikatoren wie aufsteigend (ASC) oder absteigend (DESC). In diesen Fällen besteht der beste Ansatz darin, Eingaben anhand einer Allowlist zu validieren.

Wenn die Werte von Benutzerparametern zur Bestimmung von Tabellen- und Spaltennamen verwendet werden, sollten diese Parameter mit den erwarteten oder zulässigen Werten abgeglichen werden. So lässt sich sicherstellen, dass die Abfrage keine unvalidierten Benutzereingaben enthält.

Die Validierung von Eingaben anhand einer Allowlist kann wesentlich dazu beitragen, Sicherheitsverletzungen durch böswillige Eingaben zu verhindern. Wenn möglich, empfiehlt es sich jedoch, den Code vollständig neu zu schreiben, da dies ein Symptom eines mangelhaften Softwaredesigns sein könnte.

Primäre Abwehrmaßnahme 4: Escaping aller vom Benutzer bereitgestellten Eingaben

Das Escaping aller vom Benutzer bereitgestellten Eingaben sollte als letztes Mittel eingesetzt werden, wenn die drei oben genannten Abwehrmaßnahmen nicht praktikabel sind. Das Escaping von Benutzereingaben vor ihrer Aufnahme in eine Abfrage ist zwar wirksam, wird jedoch häufig datenbankspezifisch implementiert und sollte mit Vorsicht angewendet werden, da nicht garantiert werden kann, dass es in allen Situationen vor allen Arten von SQL-Injection schützt. Das Escaping von Benutzereingaben wird typischerweise bei Legacy-Code empfohlen, wenn die Implementierung einer Eingabevalidierung nicht kosteneffizient ist.

Advertisement

Zusätzliche Abwehrmaßnahme 5: Durchsetzung des Prinzips der geringsten Berechtigungen

Um die Sicherheit von Datenumgebungen zu gewährleisten, müssen Administratoren die jedem Datenbankkonto zugewiesenen Berechtigungen minimieren. Es mag praktisch sein, einem Anwendungskonto Datenbankadministratorzugriff (DBA) oder administrative Rechte zu geben, doch dadurch entstehen wahrscheinlich Schwachstellen im Netzwerk.

Um sicherzustellen, dass alle Zugriffsrechte angemessen und sicher sind, sollten Administratoren bei den Grundlagen beginnen und ermitteln, welcher Zugriff erforderlich ist, anstatt bestehende Berechtigungen nachträglich einzuschränken. Jedes Konto sollte bei Bedarf nur Leserechte für bestimmte Tabellen besitzen. Dies trägt dazu bei, eine unnötige Offenlegung von Daten bei Angriffsversuchen zu verhindern.

Anstatt Zugriff auf die gesamte Tabelle zu gewähren, sollte für ein Konto, das nur einen bestimmten Teil benötigt, eine Sicht erstellt werden, die den Zugriff beschränkt und dem Konto Berechtigungen für diese Sicht zuweist. Um die Datensicherheit zu gewährleisten, sollte Konten nach Möglichkeit kein Zugriff mit den Fähigkeiten „create“ oder „delete“ gewährt werden.

Für eine sichere Datenbank sollte die IT-Abteilung eine Richtlinie entwickeln, die die Verwendung gespeicherter Prozeduren vorschreibt und Anwendungskonten daran hindert, Abfragen direkt auszuführen. Darüber hinaus sollten diese eingeschränkten Konten nur die erforderlichen gespeicherten Prozeduren ausführen können und keinen Zugriff auf Tabellen in der Datenbank erhalten.

Bei SQLi können Angreifer autorisierte Parameterwerte manipulieren und dadurch Zugriff auf Informationen erlangen, auf die sie anderweitig keinen Zugriff hätten, auf die die Anwendung selbst jedoch möglicherweise zugreifen darf. Daher kann die Reduzierung der Berechtigungen für Ihre Anwendungen die Risiken nicht genehmigter Zugriffsversuche erheblich senken.

Zusätzliche Abwehrmaßnahme 6: Validierung von Eingaben anhand einer Allowlist als sekundäre Abwehrmaßnahme

Die Validierung von Eingaben anhand einer Allowlist verhindert die Ausbreitung von Angriffen und dient als zusätzliche Sicherheitsebene für alle, die regelmäßig SQL-Datenbanken verwenden. Als sekundäre Abwehrmaßnahme sollte sie nicht autorisierte Eingaben erkennen und deren Einschleusung verhindern können, bevor sie an die SQL-Abfrage übergeben werden.

Die Eingabevalidierung ist entscheidend, um sicherzustellen, dass nur gültige Daten in den Workflow gelangen und die Wahrscheinlichkeit von Fehlfunktionen durch fehlerhafte, in der Datenbank gespeicherte Daten möglichst gering bleibt. Diese Art der Abwehr sollte vorzugsweise so früh wie möglich erfolgen, sobald Daten aus einer externen Quelle empfangen werden. Für eine höhere Genauigkeit sollten sowohl die syntaktische als auch die semantische Ebene geprüft werden.

Advertisement

Beispiel für eine SQL-Injection

Um zu verstehen, wie ein SQLi-Angriff ablaufen kann, ist es hilfreich, ein Beispiel zu betrachten. Stellen Sie sich folgendes Szenario vor.

Ein Angreifer versucht, sich unbefugten Zugriff auf die von einem Onlineshop verwendete Datenbank zu verschaffen. Er erstellt eine böswillige Eingabe, die in eine ungeschützte SQL-Abfrage eingeschleust wird. Dadurch kann der Angreifer in der Datenbank gespeicherte vertrauliche Informationen extrahieren und nach Belieben ändern.

Die SQL-Abfrage könnte beispielsweise so aussehen:

SELECT * FROM users WHERE username = ‘$username’ AND password = ‘$password.’

Der Angreifer würde eine böswillige Eingabe wie diese erstellen:

Username: 1′ or ‘1’ = ‘1

Password: 1′ or ‘1’ = ‘1

Die geänderte SQL-Abfrage würde nun so aussehen:

SELECT * FROM Users WHERE Username=’1′ OR ‘1’ = ‘1’ AND Password=’1′ OR ‘1’ = ‘1’

Der Hacker hat effektiv eine OR-Bedingung in den Authentifizierungsprozess eingeschleust. Schlimmer noch: Die Bedingung‘1’ = ‘1’ ist immer wahr, sodass diese SQL-Abfrage stets dazu führt, dass der Authentifizierungsprozess umgangen wird.

Diese geänderte SQL-Abfrage würde alle Datensätze aus der Tabelle „Users“zurückgeben, unabhängig davon, ob ein gültiger Benutzername und ein gültiges Passwort angegeben wurden. Dies ist eine der häufigsten Methoden, mit denen sich Angreifer unbefugten Zugriff auf vertrauliche Informationen verschaffen können.

Durch die Verwendung von Zeichen wie „;“, um eine weitere Abfrage an das Ende einer bestehenden Abfrage anzuhängen, und „–“, um Teile einer bestehenden Abfrage auszukommentieren und damit abzuschneiden, könnte ein Hacker möglicherweise ganze Tabellen löschen oder die darin enthaltenen Daten ändern. Er könnte sogar Befehle an das zugrunde liegende Betriebssystem senden, dadurch die Maschine übernehmen und sie als Ausgangspunkt für Angriffe auf das restliche Netzwerk verwenden.

Was ist das Ziel eines SQL-Injection-Angriffs?

Ein SQLi-Angriff verfolgt vier Hauptziele: die Vertraulichkeit und Integrität von Daten zu kompromittieren, Daten zu stehlen und letztlich das gesamte Netzwerk zu kompromittieren.

  • Vertraulichkeit von Daten kompromittieren: Ein Angreifer kann einen SQLi-Angriff nutzen, um auf vertrauliche Daten in einer Datenbank zuzugreifen, etwa Kreditkarteninformationen und Passwörter.
  • Integrität von Daten kompromittieren: Ein Hacker kann in einer Datenbank gespeicherte Daten ohne Genehmigung manipulieren oder löschen. Dies könnte zum Diebstahl vertraulicher Informationen oder sogar zuDistributed-Denial-of-Service-(DDoS)-Angriffen auf Systeme führen, die auf die Datenintegrität der Datenbank angewiesen sind.
  • Daten stehlen: Datendiebstahl ist eines der häufigsten Ziele eines SQLi-Angriffs. Angreifer können diese Angriffsart nutzen, um Anmeldedaten und andere vertrauliche Informationen aus Datenbanken zu stehlen.
  • Das gesamte Netzwerk kompromittieren: Ein SQLi-Angriff kann Hackern Zugriff auf andere Teile eines Netzwerks verschaffen, indem sie die gekaperte Datenbank als Ausgangspunkt verwenden. Der Angreifer könnte anschließend weitere Angriffe auf andere Systeme oder Netzwerke starten, die mit dem Netzwerk verbunden sind.

Fazit: Netzwerke vor SQL-Injection-Angriffen schützen

Advertisement

SQL-Injection zählt zu den häufigsten Sicherheitsbedrohungen für Webanwendungen und kann schwerwiegende Folgen haben, wenn sie nicht behoben wird. Zum Schutz vor diesen Angriffen sollten Organisationen die Eingabevalidierung und parametrisierte Abfragen als Teil ihrer übergreifenden Sicherheitsstrategie implementieren.

Darüber hinaus muss sichergestellt werden, dass alle Datenbanken ordnungsgemäß konfiguriert und regelmäßig mit den neuesten Patches aktualisiert werden. Durch die Implementierung wirksamer Strategien zur SQLi-Eindämmung können Organisationen das Risiko einer Kompromittierung durch einen Angriff erheblich senken.

Der beste Weg, Ihr Unternehmen zu schützen, ist eine leistungsfähige Next-Generation-Firewall. Für fachkundige Unterstützung bei der Netzwerksicherheit wenden Sie sich an eines der besten Anbieter für Unternehmensnetzwerksicherheit.

Kihara Kimachia

Kihara Kimachia

Content Writer

Kihara Kimachia is a writer and digital marketing consultant with over a decade of experience covering issues in emerging technology and innovation. In addition to appearing regularly in Enterprise Networking Planet, his work has been published in many leading technology publications, including TechRepublic, eSecurity Planet, Server Watch, Channel Insider, IT Business Edge, and Enterprise Storage Forum.

Enterprise Networking Planet Logo

Enterprise Networking Planet aims to educate and assist IT administrators in building strong network infrastructures for their enterprise companies. Enterprise Networking Planet contributors write about relevant and useful topics on the cutting edge of enterprise networking based on years of personal experience in the field.

Eigentum von TechnologyAdvice. © 2026 TechnologyAdvice. Alle Rechte vorbehalten

Werbetreibenden-Offenlegung: Einige der auf dieser Website erscheinenden Produkte stammen von Unternehmen, von denen TechnologyAdvice eine Vergütung erhält. Diese Vergütung kann beeinflussen, wie und wo Produkte auf dieser Website erscheinen, einschließlich beispielsweise der Reihenfolge, in der sie erscheinen. TechnologyAdvice schließt nicht alle Unternehmen oder alle auf dem Marktplatz verfügbaren Produkttypen ein.