SQL-Injection

SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen

8.3.2010 von Redaktion pcmagazin und Anna Kobylinska

SQL-Injections gehören zu den häufigsten Angriffsmethoden auf Web-Applikations- und Datenbankservern. Internet Magazin zeigt, wie Sie einen Webserver abschirmen und Hacker in Schach halten.

ca. 2:20 Min
Ratgeber
  1. SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
  2. Teil 2: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
  3. Teil 3: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
  4. Teil 4: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
  5. Teil 5: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
  6. Teil 6: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
Sicherheit
Sicherheit
© Archiv

Datenbanken zählen zu den beliebtesten Angriffszielen, denn sie halten meist große Mengen wertvoller Information in konzentrierter Form bereit. Bei einer SQL-Injection nutzt der Angreifer eine Sicherheitslücke in Web-Applikationen aus, die aus der Übernahme unzureichend geprüfter und nicht bereinigter Daten in eine SQL-Datenbank resultiert.Im Artikel "PHP-Filter" wurde im Detail aufgezeigt, dass die Eingabe in eine Web-Applikation gefiltert und die Ausgabe ausmaskiert werden muss. Unterlässt man diese beiden Vorsichtsmaßnahmen beim Einsatz einer SQL-Datenbank, so öffnet man Tür und Tor für SQL-Injections.In der SQL-Syntax haben bestimmte Metazeichen wie das Anführungszeichen, der Apostroph, der umgekehrte Schrägstrich und das Semikolon eine eigene Bedeutung. Werden Benutzereingaben, zum Beispiel aus Formularfeldern, ungefiltert an den SQL-Interpreter weitergegeben, werden sie von ihm ausgeführt.Dadurch lassen sich andere Sicherheitsmechanismen der Web-Applikation wie etwa das Login umgehen. Werden die Daten bei einer Datenbankabfrage unmaskiert ausgegeben, können sie wiederum mit der Syntax der Datenbankabfrage kollidieren und Datenbankfehler erzeugen.

Nicht bereinigte Anführungszeichen

Bei einer SQL-Injection nutzt der Angreifer ein Formulareingabefeld oder sendet eine Zeichenkette an ein auf dem Server befindliches Skript, welches Parameter über die URL entgegennimmt. Reagiert der SQL-Parser bereits auf ein einzelnes Anführungszeichen mit einem Fehler (etwa "500 server error"), ist es ein sicheres Zeichen, dass die Eingabe nicht bereinigt wurde und die Datenbank verwundbar ist.

Da die Struktur einer SQL-Datenbank dem Angreifer in der Regel unbekannt ist, benötigen Hacker meist mehrere Anläufe, um Schwachpunkte ausfindig zu machen. Liefert der Parser informative Fehler, kann der Angreifer durch etwas Raten und Herumprobieren den Aufbau der Datenbank schrittweise ermitteln.

Oft bietet die Webseite recht informative Hinweise wie die Namen von Variablen, die Datenbankfeldern gleichen (etwa im Quelltext der Formularfelder), die Namen einiger Benutzer (auf der Impressum-Seite) et cetera.

Schwächen in Web-Formularen

Angenommen, ein Angreifer kennt weder die Zugangsdaten zur Datenbank noch ihre genaue Struktur. Ein Angreifer, der mit einem Formular zum Einloggen konfrontiert wird, spekuliert über die Weise, wie die Abfrage zur Validierung des Benutzernamens und des Passwortes funktioniert.

Sicherheit
Diagnose der Verwundbarkeit einer Web-Applikation durch SQL-Injections mittels sqlmap.
© Archiv

Ein Blick in den HTML-Quelltext gibt meist schon zu viel preis. Besonders leicht hat es der Angreifer, wenn die gewählten Namen leicht zu erraten sind, etwa wenn der Benutzername in der Variable $benutzername und das Passwort in der Variable $passwort gespeichert werden und die zugehörigen Datenbankfelder genauso heißen:

<form action="/login.php" method=
"POST"><p>Benutzername: <input type=
"text" name="benutzername" /></p><p>Passwort: <input type="password"
name="passwort" /></p><p><input type="submit"
value="submit" /></p></form>

Wer aber meint, dass kreative Variablennamen wie etwa $namedesbenutzers und$ sicherheitspasswt statt $benutzername und $passwort sich als Sicherheitsmaßnahme qualifizieren, der irrt leider.

mysql_error() im Deployment

Manche Web-Entwickler bieten den Hackern unfreiwilligerweise hilfreiche Anhaltspunkte, indem sie etwa mysql_error() nutzen. Solange man seinen Quelltext debuggen muss, ist dieser Ansatz zu begrüßen, doch sobald die Webseite in der finalen Deployment-Fassung vorliegt, ist der Einsatz von mysql_error eher als eine Sicherheitslücke zu bezeichnen, da es potenziellen Hackern viel zu viele Informationen preisgibt, zum Beispiel:

Mehr lesen

Chronologische Liste und Netflix-Links

Marvel-Filme- und -Serien: Das ist die richtige Reihenfolge

Neuerscheinungen in der Übersicht

Netflix: Neue Filme und Serien

Vorschau auf Film- und Serien-Highlights

Amazon Prime Video: Neuheiten

Weiter zur Startseite  

Mehr zum Thema

internet, webdesign, adobe,  Illustrator, CS6

Webdesign

Webdesign in Adobe Illustrator CS6

Adobe Illustrator wird im Webdesign immer beliebter. Wie Sie das Tool richtig einsetzen, erfahren Sie hier.

Facebook stellte die neue Suche

Facebook

Facebooks Social Graph Search

Was sind die Implikationen für Unternehmen und Endanwender bei Facebooks neuer Suche Graph Search?

Der BGH erklärt das Internet zur Lebensgrundlage.

Online-Recht

Darauf müssen Sie bei den AGB achten

Allgemeine Geschäftsbedingungen liest sich niemand gerne durch. Sie sind jedoch notwendig und äußerst sinnvoll. Worauf sie achten sollten.

Online-Urheberrecht: Unser Ratgeber bietet Tipps für das Cloud-Recht.

Online-Recht in der Cloud

Wie sieht das Urheberrecht in der Wolke aus?

Dateien werden immer häufiger in der Cloud bereitgestellt. Rechtlich ist das jedoch durchaus problematisch. Wir klären über das Urheberrecht in der…

Logistik im E-Commerce: Prozesse rund um die Logistik.

E-Commerce-Logistik

Logistik im E-Commerce

Für den Erfolg eines Online-Shops sind zahlreiche Faktoren verantwortlich. Neben Produktvielfalt und Darstellung der Waren gehört auch die Logistik.