Wer ist Bobby Tables?

xkcd-Comic BobbyTables 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

Verbesserungen sind willkommen

Wird eine Sprache vermisst? Bitte melde Verbesserungen oder Ergänzungen auf eine dieser drei Arten, in absteigender Reihenfolge der Bevorzugung.

Ü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:

Mach auf GitHub mit