Kackfohgel: OOP: Behandlung von Benutzereingaben für Konstruktor

Beitrag lesen

Hallo dedlfix!

Vielen Dank für deine sehr hilfreiche Antwort.

Ich bin mir aber nicht sicher, ob ich dem Konstruktor die Variable Name so unbearbeitet übergeben darf oder dadurch eine Sicherheitslücke öffne. Meine Unsicherheit besteht natürlich auch schon bei der vorherigen Behandlung mit htmlspecialchars(), aber dadurch wurde sie mir deutlich.

Bei der Verarbeitung von Rohdaten gibt es eigentlich kein Sicherheitsproblem - wenn PHP an sich korrekt arbeitet. Das entsteht bei der Ausgabe erst, wenn Code und Nutzdaten zusammen in einem Dokument/Text ausgeliefert werden sollen, so wie das bei HTML oder SQL der Fall ist.

Naja, ich hatte genau dort eine Sicherheitslücke vermutet.

Wenn eine Übergabe "SELECT * FROM tab WHERE 'name' = $name" eine Sicherheitslücke ist, könnte man ja vlt. auch mit new Benutzer($name); oder tuWas($name); etwas anstellen. Wie gesagt, ich habe dazu zu wenig Phantasie oder auch kriminelle Energie, aber möglicherweise kann man hier ja auch den Konstrukt beenden und anderen PHP-Code einfügen, wenn man es "unbehandelt" lässt. Speziell dazu habe ich nichts gefunden. Ob das jetzt an meinen Suchparametern gelegen hat oder es einfach kein Problem ist, vermochte ich nicht zu sagen.

Darf/sollte ich eine Postvariable unbearbeitetet an den Konstruktor übergeben?

Das kommt auf die Aufgabe der Klasse an. Klassen, die allgemein Daten verarbeiten, bekommen immer Rohdaten.

Gut:) Hast du vlt. noch ein Beispiel, wo man das nicht so machen sollte?

Freundliche Grüße
Kackfohgel

P.S.
Den von dir verlinkten Artikel habe ich gelesen. Aber speziell zu der Problematik Daten an Klassen zu übergeben habe ich nichts gefunden. Aber zumindest hat er mich dazu motiviert, Daten nicht einfach unüberprüft zu übergeben und hier vorab nochmal nachzufragen ;-)