Hi!
Grad seh ich nicht, wo der essentielle Unterschied von: "Jede Usereinagbe sollte geprueft werden" zu "pruefe Daten, wenn Du was damit machst" ist. Dass man Daten mit denen nicht passiert auch nicht pruefen braucht duerfte klar sein? Reden wir aneinander vorbei? Ich sage, du sollst pruefen. Du, wann und wie. Widerspricht sich doch nicht.
Der allgemeine Tenor lautet - und so auch deine Aussage - "prüfe alle Eingabedaten, das ist wichtig für die Sicherheit". Stellt sich die Frage: worauf prüfen und welche Sicherheit? Bei der Eingabe steht doch noch gar nicht fest, welches Ausgabemedium angesprochen wird. Also was soll man denn da prüfen - außer auf fachlichen Inhalt? Aus Sicherheitssicht ist Prüfen auch gar nicht notwendig. Stattdessen muss beim Ausgeben eine Behandlung gemäß Kontext stattfinden. Und das nicht nur für die Eingabedaten.
"Der allgemeine Tenor" lässt sich nur bei ganz einfachen Abläufen berücksichtigen, wenn die Daten geradeaus durchlaufen. Ansonsten fordert er etwas, das im Prinzip nicht zu realisieren ist, und lässt wichtige Sicherheitsaspekte weg.
Deswegen ist meine Aussage, dass man Eingabedaten nur aus fachlicher Sicht prüfen muss, wenn das notwendig ist. Die Sicherheit muss bei der Ausgabe beachtet werden.
(Diese Aussage gilt für Systeme, die sich nicht mit Puffergrößen rumschlagen müssen (z.B. PHP). Für Systeme, die ihre Puffer selbst verwalten (z.B. C), muss zumindest die Größe der Eingabedaten berücksichtigt werden, damit es keinen Pufferüberlauf gibt.)
Lo!