Spring GDS 25. Jubiläum
Ein Logistikunternehmen, das in 190 Länder versendet, hat etwas gebaut, um an sich selbst zu liefern.
SQL Injection ist ein Angriff, bei dem nicht vertrauenswürdige Eingaben die Datenbankabfrage verändern, die ein Server ausführt. Wenn eine Anwendung eine Abfrage baut, indem sie Nutzereingaben direkt in eine Zeichenkette klebt, kann ein Angreifer Eingaben schreiben, die ändern, was die Abfrage tut. Statt nach einem Benutzernamen zu suchen, könnte die Abfrage jede Zeile zurückgeben, die Passwortprüfung überspringen oder eine Tabelle löschen. Der Angriff trifft die Datenbank und die Daten dahinter, was ihn gefährlich macht.
Er funktioniert, weil die Anwendung Daten und Befehl nicht unterscheiden kann, sobald sie in einer Zeichenkette vermischt sind. Geben Sie einen Wert wie ' OR '1'='1 in ein so gebautes Login-Formular ein, und die Bedingung wird immer wahr, sodass jemand ohne Passwort hineinkommt. Das unterscheidet sich von XSS, das den Browser eines anderen Nutzers ins Visier nimmt. SQL Injection zielt auf den Server und seinen Speicher. Beide entstehen aus demselben Fehler, dem Vertrauen in Eingaben, doch sie greifen unterschiedliche Schichten an.
Die Lösung sind parametrisierte Abfragen, auch Prepared Statements genannt. Die Abfragestruktur wird getrennt von den Werten definiert, sodass Nutzereingaben den Befehl nie ändern können. ORMs und Query Builder tun dies standardmäßig, weshalb sie sicherer sind als handgebaute Zeichenketten. Datenbankkonten mit minimalen Rechten und Eingabevalidierung fügen weitere Schichten hinzu und begrenzen den Schaden, selbst wenn etwas durchrutscht.
Wir bauen Abfragen nie durch Verketten von Nutzereingaben. Parametrisierte Abfragen sind in jedem Projekt der Standard, und Datenbankkonten erhalten nur die Rechte, die die Aufgabe braucht, und nicht mehr. Wenn wir einen Pull Request prüfen, ist jede rohe Abfrage, die Eingaben verarbeitet, ein Signal, bei dem wir innehalten.
Das liegt innerhalb unserer breiteren Praxis von QA-Strategie und Governance über Webentwicklung und individuelle Webanwendungen hinweg. Sicherheit ist Teil der Software-Qualitätssicherung, fortlaufend geprüft statt einmal am Ende auditiert. Wir haben Systeme gebaut, die sensible Kunden- und Geschäftsdaten für Marken halten, bei denen ein Leck ein echtes Versagen wäre, und diese Verantwortung prägt, wie wir die Datenschicht ab dem ersten Tag schreiben.
Eine Datenbank mit Daten, die Sie nicht verlieren dürfen? Sorgen wir dafür, dass sie verschlossen bleibt.
Ein Logistikunternehmen, das in 190 Länder versendet, hat etwas gebaut, um an sich selbst zu liefern.
Eine Marke in ein funktionierendes Geschäft verwandeln.
Eine halbe Million Menschen. Eine App. Null Chaos.















