Wer ist Bobby Tables?
Vom Comic xkcd
Schule: "Hallo, hier spricht die Schule Ihres Sohnes. Wir haben Computerprobleme."
Mutter: "Auweia – hat er etwas kaputtgemacht?"
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 futsch. Ich hoffe, Sie sind jetzt glücklich."
Mutter: "Und ich hoffe, Sie haben gelernt, Datenbankeingaben zu säubern."
(Titeltext: "Ihre Tochter heißt Hilfe ich werde in einer Führerscheinfabrik gefangengehalten.")
Wie man Bobby Tables vermeidet
Man kann Bobby-Tables-Angriffe nur vermeiden,
- indem man keine SQL-Anweisungen erstellt, die von außen kommende Daten enthalten.
- indem man SQL-Aufrufe mit Parametern tätigt.
Das ist alles. Nicht versuchen, ungültige Zeichen zu maskieren. Nicht versuchen, es eigenhändig zu machen. Lerne, parameterisierte Anweisungen zu benutzen, und zwar immer und jedes Mal.
Im Comic wird eine Sache falsch gemacht. Die Antwort lautet nicht, die Datenbankeingaben selber zu säubern. Dies ist fehleranfällig.
Beispiele
Siehe Kasten links für die jeweilige Sprache.
Andere wahllose Ressourcen
- SQL Injection Myths and Fallacies
- http://www.schneier.com/blog/archives/2008/10/how_to_write_in.html
- http://st-curriculum.oracle.com/tutorial/SQLInjection/
Verbesserungen sind willkommen
Wird eine Sprache vermisst? Bitte melde Verbesserungen oder Ergänzungen auf eine dieser drei Arten, in absteigender Reihenfolge der Bevorzugung.
- Erstelle einen Fork vom Repository bobby-tables auf github, füge die Änderungen hinzu und schicke mir einen Pull-Request.
- Erstelle eine Anfrage im Fallbearbeitungssystem.
- Schicke mir eine Email: Andy Lester, andy at petdance.com.
Übersetzungen sind auch willkommen
Hilf mit, diesen Webauftritt zu übersetzen! Es sind nur 100 Ausdrücke. Keine Programmierung notwendig.
Siehe Anleitung im Repository bobby-tables auf github.
In Vorbereitung
- Erklärung, warum es schlecht ist, Anweisung auf Grundlage von außerhalb kommender Daten zu erzeugen.
- Möglicher Geschwindigkeitszuwachs unter Wiederverwendung vorbereiteter Anweisungen.
Danksagung
Dank gilt den folgenden Leuten für ihre Mitwirkung:
- Nathan Mahdavi
- Hannes Hofmann
- Mike Angstadt
- Peter Ward
- David Wheeler
- Scott Rose
- Erik Osheim
- Russ Sivak
- Iain Collins
- Kristoffer Sall Hansen
- Jeff Emminger
- Travis Swicegood
- Will Coleda
- Kai Baesler
- Mike Markley
- Michael Schwern
- Jeana Clark
- Lars Dɪᴇᴄᴋᴏᴡ
- Jani Hur
