1unitedpower: Authentifizierung

Beitrag lesen

$username = $_POST['username'];

Von sowas lass die Finger! Bei $_POST['username'] weisst Du immer und auch in 30 Jahren auf den ersten Blick, dass das "vergiftet" sein kann.

Da widerspreche ich. Ich kann deine Argumentation gut nachvollziehen, wenn man das POST-Array immer ausdrücklich referenziert, dann sieht man sofort, dass es sich um Eingabedaten handelt, die von Nutzern stammen können und deshalb auch manipuliert sein können. Wenn man diese Variablen dann in einen anderen Kontext bringt, zum Beispiel in eine SQL-Abfrage oder in eine HTML-Ausgabe, dann wittert man sofort, dass hier eine Gefahr bestünde, wenn man die Variablen nicht entsprechend maskiert/behandelt. Allerdings sollte man die kontextgerechte Behandlung immer durchführen, wenn ein Kontextwechsel stattfindet, nicht nur dann, wenn es sich um Eingabedaten handelt. Auch vom Entwickler gesetzte Variablen können in unvorhersehbaren Kontexten nämliche Fehler oder Sicherheitslücken verursachen. Oft ist es auch schwer nachzuvollziehen, ob eine Variable aus einer Benutzereingabe stammt oder nicht, weil sie zum Beispiel als Parameter diverse Male durch das Programm gereicht wurde. Man sollte sich also antrainieren, Kontextwechsel immer zu behandeln, und zwar unmittelbar bevor der Wechsel stattfindet, nicht früher (und nicht wenn es zu spät ist). Dann stellt auch das Umkopieren von $_POST-Variablen in eigene Variablenbezeichner kein Problem dar. Ich finde es dient sogar enorm der Leserlichkeit von Programmcode, wenn man häufige Array- oder Objekt-Zugriffe durch prägnante Variablennamen abkürzt.

Mit der Übergabe verlierst Du diese Information. Dto. für $_GET, $_COOKIE, $_SERVER, $_ENV ...

Was nicht schlimm ist.