◀ Zum Blog

SQL-Injection einfach erklärt: wenn die Datenbank zur Schwachstelle wird

Hinter fast jeder Website steckt eine Datenbank. Die SQL-Injection ist einer der ältesten und gefährlichsten Angriffe darauf. Was eine Datenbank ist, wie der Angriff funktioniert und wie man sich schützt, verständlich erklärt.

Datenbank-Symbol mit eingeschobenem Code-Befehl als Sinnbild für eine SQL-Injection

Die SQL-Injection steht seit Jahren ganz oben auf der Liste der gefährlichsten Web-Schwachstellen. Sie klingt technisch, lässt sich aber gut verstehen, wenn man weiß, was eine Datenbank überhaupt ist. Und das lohnt sich, denn fast jede moderne Website, auch jede WordPress-Seite, steht und fällt mit ihrer Datenbank.

Was ist eine Datenbank?

Eine Datenbank ist das Gedächtnis Ihrer Website. Man kann sie sich wie eine riesige, gut sortierte Tabellensammlung vorstellen: Hier liegen alle Texte, Seiten, Beiträge, Benutzerkonten, Passwörter (verschlüsselt) und Einstellungen. Bei WordPress ist das in aller Regel eine MySQL-Datenbank. Jedes Mal, wenn jemand Ihre Seite aufruft, fragt WordPress die Datenbank ab: „Gib mir den Beitrag mit dieser Nummer.“ Diese Abfragen werden in einer eigenen Sprache gestellt, der Structured Query Language, kurz SQL.

Wie funktioniert eine SQL-Injection?

Das Problem entsteht, wenn eine Website Eingaben von Besuchern (etwa aus einem Suchfeld oder Login-Formular) ungeprüft in eine Datenbankabfrage einbaut. Ein Angreifer gibt dann statt eines normalen Suchbegriffs gezielt Zeichen ein, die die Datenbank als zusätzlichen Befehl missversteht. Vereinfacht gesagt: Die Datenbank kann nicht mehr unterscheiden, was harmlose Eingabe und was Befehl ist, und führt beides aus. Konkrete Angriffszeilen zeige ich hier bewusst nicht, das Prinzip aber ist genau dieses Vermischen von Daten und Befehl.

Was ein erfolgreicher Angriff anrichten kann

  • Auslesen der gesamten Datenbank: Kundendaten, E-Mail-Adressen, verschlüsselte Passwörter
  • Verändern oder Löschen von Inhalten, im schlimmsten Fall der ganzen Seite
  • Anlegen eines eigenen Administrator-Kontos und damit volle Übernahme
  • Umgehen der Anmeldung, indem die Login-Abfrage manipuliert wird

Gerade weil hier persönliche Daten betroffen sein können, ist eine SQL-Injection nicht nur ein technisches, sondern auch ein handfestes Datenschutz-Problem: Ein solches Datenleck ist meldepflichtig und kann teuer werden.

Wie man sich schützt

  • Prepared Statements: Die saubere Programmierweise trennt Daten strikt von Befehlen, so kann Eingabe nie zum Befehl werden. WordPress selbst nutzt das, das Risiko kommt meist über schlecht programmierte Plugins.
  • Wenige, geprüfte Plugins aus vertrauenswürdiger Quelle, denn jede schlecht gemachte Erweiterung kann ein Einfallstor sein
  • Zeitnahe Updates, denn bekannt gewordene SQL-Lücken in Plugins werden schnell automatisiert ausgenutzt
  • Eine Web-Application-Firewall, die verdächtige Eingaben blockiert, bevor sie die Datenbank erreichen
  • Regelmäßige Backups der Datenbank, damit nach einem Angriff ein sauberer Stand zurückkommt

Für Sie als Betreiber heißt das vor allem: Sie müssen die Technik nicht selbst beherrschen, aber dafür sorgen, dass jemand Plugins aktuell hält und die Seite überwacht. Genau das leistet ein laufender WordPress-Wartungsvertrag. Wer tiefer einsteigen will, findet bei OWASP eine ausführliche Erklärung zur SQL-Injection. Wie Angreifer verwundbare Seiten überhaupt finden, steht im Beitrag zu WPScan.

Das könnte Sie auch interessieren

SicherheitWie Hacker WordPress angreifen: Exploits, Injections und Bypass erklärtWeiterlesen →SicherheitWPScan: das Werkzeug, mit dem WordPress-Lücken gefunden werdenWeiterlesen →SicherheitWordPress sicher machen: die wichtigsten GrundlagenWeiterlesen →
◀ Alle Beiträge ansehen
Ihre Website

Bereit für eine Website, die für Sie arbeitet?

Schreiben Sie mir kurz, was Sie vorhaben. Ich melde mich mit einer ehrlichen Einschätzung, unverbindlich.

Carlo Krämer · ausgebildeter Mediengestalter Digital und Print (IHK)