Skip to main content

SQL-Injection

Injection der strukturierten Abfragesprache

Entsprechender Fehler

„Der Server ist durch SQL-Injection-Angriffe gefährdet. Vergewissern Sie sich, dass die eingegebene SQL-Abfrage validiert ist.“

Problem

Ein SQL-Injection-Angriff ist eine Art Sicherheitslücke im Code von Websites und Webanwendungen. Diese Sicherheitslücke ermöglicht es einem Angreifer, Backend-Prozesse zu kapern und die Abfragen einer Anwendung an ihre Datenbank zu stören.

SQL-Injection-Angriffe erfolgen, wenn Daten von einer nicht vertrauenswürdigen Quelle in ein Programm gelangen. Die Daten werden dann verwendet, um dynamisch eine SQL-Abfrage zu erstellen.

Wenn SQL-Injection-Angriffe erfolgreich sind, können Angreifer:

  • Sich ohne Kennwort bei einer Anwendung oder einem Website-Frontend anmelden.

  • Auf gespeicherte Daten aus gesicherten Datenbanken zugreifen, sie ändern und löschen.

  • Ihre eigenen Datenbankeinträge erstellen oder bestehende Einträge ändern und so den Weg für weitere Angriffe ebnen.

Lösung

Verhindern von SQL-Injection-Angriffen:

  1. Verwendung von vorbereiteten Anweisungen (mit parametrisierten Abfragen), um sicherzustellen, dass die an SQL-Anweisungen übergebenen Parameter (Eingaben) auf sichere Weise behandelt werden.

  2. Erlauben Sie die Validierung von Eingabedaten (keine Blocklist). Die Überprüfung von Eingabedaten in der Liste zulassen (keine Blocklist). Angreifer finden fast immer einen Weg, Ihre Liste zu umgehen. Überprüfen und filtern Sie Benutzereingaben nach Möglichkeit nur mit strengen Zulassungs-Listen.

  3. Umgehung von Sonderzeichen in Eingabeparametern, wenn parametrisierte Abfragen und die Validierung von Eingabedaten nicht möglich sind.

  4. Durchsetzung des Prinzips der geringsten Privilegien, Verstärkung der Zugangskontrollen zu Ihrer Website, um Sicherheitsbedrohungen zu verringern.

    • Verwenden Sie die minimalen Berechtigungen auf Ihren Systemen, um eine Aktion durchzuführen.

    • Gewähren Sie Berechtigungen nur so lange, wie die Aktion erforderlich ist.

    • Vergeben Sie keine Administratorrechte für Anwendungskonten.

    • Reduzieren Sie die Berechtigungen der einzelnen Datenbankkonten in Ihrer Umgebung.