Tach!
warum soll man Filter-Methoden wie filter_input() anstatt Superglobale-Veriablen wie **$Server verweden?
Man sollte sie nutzen, wenn man deren Funktionalität nutzen möchte. Möchte man das nicht, kann man sie ignorieren. Und es geht nicht um ein anstatt, sondern um ein sowohl als auch. Die Filterfunktionen holen sich keine Daten, die muss man denen übergeben, zum Beispiel aus den bekannten superglobalen Variablen.
Laut Doku teilen sich diese Funktionen in validation und sanitization. Validation prüft ob die Inhalte bestimmten Bedingungen entsprechen. Das will und braucht man doch des öfteren je nach Anforderung der Geschäftslogik. Sanitization hingegen muss man nicht um jeden Preis haben, denn das verändert die Eingaben bis hin zu ungewünschten Ergebnisses. Der unbedachte Entwickler wendet Sanitization an der falschen Stelle an: bei den Eingabedaten. Dabei wissen die Eingabedaten noch gar nichts über ihren künftigen Weg und welche Zeichen dort irgendwelche besonderen Bedeutungen haben. Die kontextgerechte Behandlung, kurz bevor die Daten in den anderen Kontext eingefügt werden, stellt hingegen sicher, dass Zeichen nicht verloren gehen und sie stattdessen ordentlich maskiert werden, so dass sie syntaktisch korrekt und damit gefehrlos sind. Es wäre jedenfalls ein Trugschluss, dass man sich mit einmal filtern am Anfang die absolute Sicherheit ins Boot holt. Im Gegenteil, diese ist damit nicht garantiert und stattdessen gibts eine Menge Kollateralschaden.
Beispiel: Wenn man in einem Youtube-Chat eines Live-Videostreams eine URL eingibt, wird die Nachricht mit einem Warnhinweise nicht veröffentlicht. Soweit noch so gut, Spam-Schutz und so, wissenschon. Filtert aber auch jede sinnvolle und ungefährliche URL raus. Unsinn hingegen ist es, dass auch Nachrichten, in denen es nach HTML auch nur riecht, sprich: ein beliebiges Wort enthält, das in <> eingerahmt ist, rausgefiltert werden. Das hätte man man sicherheitstechnisch durch ordentliche Maskierung lösen können.
Neue Kovention in PHP 7 Doktrine oder sicherheitstechnisch???
Ich kenne von Doktrine nur den Namen. Die Funktionen gibts jedenfalls schon lange in der 5er Serie.
dedlfix.