Tach!
Wenn ich im Code einen Wert fest eintrage, weil meine Geschäftslogik gegen diesen prüfen will, dann ist der in diesem Kontext "richtig" oder "sauber". Da muss ich nicht an Kontextwechsel denken, denn da gibt es nicht wirklich einen.
Doch, auch dann, denn auch da bringst du Daten in Code und musst mindestens die Begrenzungszeichen maskieren, wenn sie darin vorkommen. Konstante Daten bilden keine Ausnahme. Dasselbe gilt auch, wenn du beispielsweise unter PHP mit echo einen konstanten Wert in die Ausgabe gibst, die ein HTML-Dokument mit eingebettetem Javascript ergibt.
Um aber nun die Idee hinter dem Konzept eines Kontextwechsels zu verstehen, muss ich wissen, dass es Fälle gibt, in denen eine gewisse in Code gegossene Gutgläubigkeit sehr fatal sein kann.
Ja, aber dazu spielt die Herkunft der Daten keine Rolle.
Und wenn ich den Kontextwechsel wirklich verstanden und verinnerlicht habe, dann kann ich eine generelle Haltung dazu annehmen, wie Du sie gerade beschreibst.
Mit dem Kontextwechsel kommt man bereits in Berührung, wenn das Tutorial beschreibt, dass bei Stringliteralen Anführungszeichen mit Backslash davor zu notieren sind, etc. Im Grunde genommen fehlt dann nur noch die Erkenntnis, dass das Prinzip auch anzuwenden ist, wenn man es nicht so offensichtlich sieht wie bei Stringliteralen.
Man könnte über einen Programmierkurs diese handwerkliche Vorgehensweise auch direkt lernen, wenn man Webdevelopment von der Pike auf lernt, aber oft kommen die Macher "von der Seite her" und benötigen diesen Lernweg.
Das ist gut möglich, aber hilft denn erstmal die Geschichte von den bösen Daten, wenn es tatsächlich keinen Unterschied gibt? Bringt man so nicht unnötigerweise bei, zwischen den Daten zu unterscheiden?
Dass man mit einem Beispiel (wie dem xkcd) die Auswirkungen zeigt, die bei gezieltem Ausnutzen entstehen können, ist ja ok. Aber das Augenmerk sollte nicht eingeschränkt werden, wenn man bereits die Aufmerksamkeit des Lernenden hat. Kaputt ist das Program auch, wenn die "guten" Daten unbehandelt bleiben.
dedlfix.