Inhaltsverzeichnis
Was ist SQL Injection?
Warum SQL Injection ein wichtiges Thema ist
SQL Injections stehen seit über 10 Jahren an der Spitze jeder OWASP Top 10 Liste. Viele Web-Applikationen verwenden Datenbanken zur effizienten Speicherung und zum Abrufen von Daten. Dies bedeutet, dass Datenbanken viele wichtige und sensible Daten wie Benutzernamen, Passwörter, Geburtsdaten, Sozialversicherungsnummern und mehr enthalten.
Webanwendungen interagieren mit der Datenbankebene mithilfe von SQL-Abfragen. In der Regel werden diese Abfragen mithilfe von Eingaben auf der Webseite ausgeführt – wie bei einer Suchabfrage. Eine schlecht gestaltete Webanwendung akzeptiert jedoch gegebenenfalls jede beliebige Art einer SQL-Abfrage, die in ein Eingabefeld eingegeben wird, auch wenn dieses Feld nur für einen bestimmten Datentyp vorgesehen ist, z. B. für den Vornamen des Benutzers. Angreifer nutzen diesen Fehler aus, indem sie SQL-Abfragen in diese Eingabefelder eingeben, um in der Datenbank gespeicherte Daten abzurufen oder zu beschädigen.
Was Sie selbst tun können
Es gibt eine Vielzahl von Techniken, um Angreifer davon abzuhalten, Ihre Daten zu stehlen oder zu beschädigen. Die meisten Techniken zielen darauf ab, Endbenutzer möglichst davon abzuhalten, Daten oder Befehle zu übermitteln, die von Ihrem Webserver oder Ihrer Datenbank interpretiert werden können. Sie müssen beachten, dass eine Dateneingabe aus einer Vielzahl von Quellen stammen kann, zum Beispiel aus Übermittlungen, URL-Argumenten und Browser-Cookies.
Einige der gebräuchlichsten Techniken zur Verhinderung von SQL-Injections sind unten aufgeführt.
- Bereinigung. Die häufigste Schutzmaßnahme ist die Bereinigung aller vom Benutzer bereitgestellten Daten, um Zeichenfolgen zu entfernen, die vom Interpreter als SQL-Befehle ausgeführt oder direkt an eine SQL-Datenbank weitergeleitet werden könnten. Bei der Bereinigung werden die in den Benutzerdaten ausführbaren Befehle im Allgemeinen durch alternative, nicht ausführbare Zeichen ersetzt.
- Filterung und Validierung. Alle vom Benutzer bereitgestellten Daten sollten validiert werden, indem Format, Länge und andere Attribute zulässiger Eingaben begrenzt werden. Auftretende SQL-Befehle oder andere bösartige Codes sollten herausgefiltert werden.
- Vermeiden Sie ungesicherte URL-Parameter. Vermeiden Sie die Verwendung von URL-Argumenten, wie in einem objektrelationalen Modell (ORM), die Datenbankvorgänge auslösen. Verwenden Sie stattdessen eine sichere API für den gesamten Datenbankzugriff.
- Begrenzung des Umfangs von SQL-Befehlen. Verwenden Sie LIMIT-Befehle innerhalb von SQL-Vorgängen, um die Offenlegung von Daten zu minimieren, falls eine SQL Injection Ihre Datenbank erreicht.
Obwohl Codierungstechniken wie die oben aufgeführten wichtig sind, garantiert auch eine sorgfältige Codierung keinen Schutz. Softwarebibliotheken von Drittanbietern, nachfolgende Codeänderungen durch andere Entwickler und neuartige Verschleierungsversuche können Ihre Website Angriffen durch SQL Injections aussetzen. Durch Hinzufügen einer automatisierten Schutzebene mit einer Web Application Firewall kann sichergestellt werden, dass Ihre Websites und Webanwendungen geschützt bleiben.