Rolf B: Kann ich alle $_GET und $_POST Daten auf einmal absichern?

Beitrag lesen

Hallo Steffen,

aus meiner Sicht: Keinesfalls so machen.

Was definitiv NICHT zu empfehlen ist, ist ein extract(). Wenn dir jemand "böse" Feldnamen postet, überschreibt er Dir damit deine eigenen Variablen. Lass die Werte in $_GET und $_POST stehen und verarbeite sie von dort aus.

Es ist auch Unsinn, Benutzereingaben zu maskieren, wenn kein Kontextwechsel stattfindet. Wenn Dir jemand "Spaß & Freude" postet, willst Du das & auch in deinem PHP String sehen. Wenn dir jemand Steffen"; DROP TABLE students; postet, willst Du das im PHP ebenfalls genau so sehen - aber deine Datenbank soll das bitte nicht ungefiltert abbekommen. Bekommst Du <script src="https://evil.ru/kill.js"></script>, kannst Du das getrost im PHP verarbeiten und musst für das Speichern in der DB nur die " maskieren. Erst wenn's zum Browser geht, wird es brenzlig.

Also: der erste relevante Kontextwechsel findet beim Speichern in der DB statt, und da musst Du eh die Escape- (oder Quote-)Funktion des DB Treibers nehmen. Der zweite relevante Kontextwechsel ist die Ausgabe ins HTML. DORT nimmst Du htmlspecialchars(), und zwar NUR das.

Rolf

--
sumpsi - posui - obstruxi