SQL-Injection
SQL-Injection entsteht, wenn fremde Daten die Struktur einer Datenbankabfrage verändern. Parameter binden Werte, aber keine Zugriffsrechte.
SQL-Injection bezeichnet das Einschleusen von SQL-Anweisungsbestandteilen über Daten, die eine Anwendung verarbeitet. Werden solche Werte in den Text einer Abfrage eingebaut, können sie deren Bedeutung verändern. Welche Daten gelesen oder verändert werden können, hängt unter anderem von den Rechten des verwendeten Datenbankkontos ab.
Projektfilter und Abfragestruktur trennen
Ein fiktives Ticketportal sucht Einträge zu einer Projektreferenz. Den Wert aus dem Feld projectRef behandelt es als gebundenen Abfrageparameter: Die Abfragestruktur steht fest, der Wert wird getrennt über die Datenbankschnittstelle übergeben. Er soll ein Suchwert bleiben und keinen Teil der SQL-Syntax bilden.
Das bloße nachträgliche Vorbereiten einer bereits aus Eingaben zusammengesetzten Abfrage schafft diese Trennung nicht. Auch früher gespeicherte Daten oder Werte aus anderen Systemen dürfen beim späteren Abfrageaufbau nicht ungeprüft zu SQL-Text werden.
Werte binden, Struktur fest vorgeben
Ein Sortierfeld wie sortKey ist ein anderer Fall. Platzhalter für Datenwerte ersetzen keine beliebigen Spaltennamen oder Sortierrichtungen. Die Anwendung ordnet bekannte Auswahlwerte deshalb festen, im Code vorgegebenen Spalten und Richtungen zu. OWASP beschreibt diese Trennung zwischen Parameterbindung und erlaubten Strukturentscheidungen ausdrücklich.
Parameterbindung prüft zudem nicht, ob die angemeldete Person auf das angefragte Projekt zugreifen darf. Diese Berechtigungsprüfung bleibt Aufgabe der Anwendung. Ein auf benötigte Rechte begrenztes Datenbankkonto kann mögliche Schäden begrenzen; es beseitigt die unsichere Abfragekonstruktion selbst nicht.
Quellen
Verwandte Begriffe
- DatenbankEine organisierte Sammlung von Daten, auf die Software gezielt zugreifen und Änderungen anwenden kann.
- SQLEine Sprache zum Definieren, Abfragen und Ändern von Daten; kein einzelnes Datenbankprodukt.
- Object-Relational MappingObjekte im Programm mit Daten einer relationalen Datenbank verbinden.
- DatenminimierungDatenminimierung begrenzt personenbezogene Daten auf das, was für einen festgelegten Zweck angemessen, relevant und erforderlich ist.
- DatenaufbewahrungsregelEine Datenaufbewahrungsregel legt Zweck, Beginn, Dauer und Ende der Speicherung fest. Löschaufträge und Kopien müssen technisch berücksichtigt werden.
- Envelope EncryptionEnvelope Encryption trennt den Schlüssel für die Daten vom Schlüssel, der diesen schützt. Verschlüsselte Datei und verpackter Datenschlüssel gehören zusammen.
Ihr Vorhaben mit ASES
Beschreiben Sie uns Ihr Vorhaben. Wir melden uns mit einer ersten Einschätzung.