Kackfohgel: OOP: Behandlung von Benutzereingaben für Konstruktor

Beitrag lesen

Hallo Sven Rautenberg,

danke für deine Ausführungen. Ich erlaube mir mal den Teil deines Postings, den ich glaube verstanden zu haben, zu streichen und würde an dieser Stelle gerne nochmal nachhaken:

Angst sollte man haben, wenn auf dem Weg von $_POST/_GET/_COOKIE/_SERVER hin zur letztendlichen Verwendung der Variablen in HTML, SQL, Javascript, CSS etc. nicht mehr nachvollzogen werden kann, ob in irgendeiner Zwischenschicht bereits eine Absicherung erfolgte, oder noch nicht. Und genau deshalb wird geraten, das zum letztmöglichen Zeitpunkt zu tun: Denn wenn man sich z.B. HTML-Code anschaut, in dem <?php echo $name ?> steht, dann will man nicht recherchieren, ob irgendwo vorher Escaping stattfand. Steht dort hingegen <?php echo htmlspecialchars($name) ?>, ist sonnenklar, dass hier Escaping stattfindet, man muss nichts suchen. (Ob es das korrekte Escaping ist, ist nochmal eine andere Frage, gerade bei HTML ist htmlspecialchars() ohne weitere Parameter nicht an jeder Stelle ausreichend.)

Man liest ja immer wieder, dass man Design und Code trennen sollte. Ich würde das jetzt nochmal um die HTML-Struktur ergänzen.

Also ich habe meine Datei mit HTML-Code (Struktur). Darin binde ich eine/mehrere externe CSS-Datei ein (Design). Jetzt kommt noch eine/mehrere PHP-Dateien mit Funktionen (Code) hinzu.

Ich würde jetzt hier sagen, dass htmlspecialchars() eine Funktion ist, die eigentlich in meiner Strukturdatei nichts zu suchen hat. Klar mir leuchtet ein, welche Vorteile es bringt, wenn man in der HTML-Datei erkennt, dass die Variable escaped wurde, ABER was ist, wenn der Benutzername max. 20 Zeichen lang sein soll, keine Sonderzeichen enthalten darf, nicht schon vergeben sein darf ... usw. ...! Da sollte ich mich doch in meiner Strukturdatei auch darauf verlassen, das meine Funktionen in der Codedatei dies ordnungsgemäß prüft und muss dies deshalb nicht in der Strukturdatei validieren.(?)

Freundliche Grüße
Kackfohgel