Wie SQL Spritzen wirken?
Schule: „Hallo, hier spricht die Schule Ihres Sohnes. Wir haben Computerprobleme.“
Mutter: „Auweia – hat er etwas kaputt gemacht?“
Schule: „So ähnlich. Haben sie wirklich Ihren Sohn Robert‘); DROP TABLE Students;–‚ genannt?“
Mutter: „Oh. Ja. Wir rufen ihn klein Bobby Tables.“
Schule: „Also, der Datenbestand der Schüler dieses Jahres ist jetzt futsch. Ich hoffe, Sie sind jetzt glücklich.“
Mutter: „Und ich hoffe, Sie haben gelernt, Datenbankeingaben zu säubern.
Wie sollte man nicht programmieren?
Wie fördert man(n) Bobby Tables?
- Indem man Input-Sanitizing in der Softwareentwicklung ignoriert.
- Indem man SQL-Anweisungen ungeprüft verarbeiten lässt, die aus dem bösen Internet kommen.
- Indem man SQL-Aufrufe mit Parametern an verwundbare Webanwendungen sendet.
- Indem man gleich die Zugangsdaten zur Datenbank in seiner Webanwendung veröffentlicht 😉
Fördere erfolgreiche Injektionen aus dem bösen Internet ?
Ist das (fast) alles? Nein natürlich nicht. Man kann auch nach andere Grundlagen ignorieren, die bei der Softwareentwicklung zum Handwerkszeug eines Profis gehören. 😮
- Versuchen Sie auch nicht ungültige Zeichen zu maskieren etc. Ein guter Pentester findet immer eine Lücke!
- Versuchen Sie nicht zu übergebende Daten nachträglich manuell zu bereinigen bzw. säubern.
Wie sollte guter Code gestrickt sein?
- Lerne einfach parameterisierte Anweisungen zu nutzen – immer und ohne Ausnahme
- Sorge dafür, dass nur der Anwendungsinput verarbeitet wird, der verifiziert und „sauber“ ist.
- Im Idealfall werden Pentester arbeitslos 😉
Anbei Quellen zum Thema SQL Injektionen und den eingangs angesprochenen SQL Spritzen: