de.comp.lang.php.* FAQ

12.10. Vermeide globale Variablen

Keywords: Namensraum | GET | POST | Cookie | Parameter

Antwort von Kristian Köhntopp

In veralteten Versionen von PHP wurden eine ganze Menge Daten aus der Prozessumgebung und aus dem Internet in den globalen Namensraum importiert. Das war sehr bequem, aber auch ein Quell von zahlreichen Exploits in vielen weit verbreiteten PHP-Scripten. Mit der Version 4.2 wurde das Standardverhalten von PHP geändert: Diese Informationen stehen jetzt nur noch in besonderen, superglobalen Arrays zur Verfügung (siehe Welche Variablenarten gibt es in PHP und wie greife ich auf sie zu? und Warum funktionieren meine Formulare nicht?).

Versionen von PHP 4.2 und höher zeigen ebenfalls dieses obsolete Verhalten, sobald die Konfigurationsvariable register_globals wieder auf den Wert On gestellt wird. Es ist dringend empfohlen, diese Variable auf Off zu lassen.

Daher war es in diesen veralteten Versionen von PHP dringend notwendig, globale Variablen möglichst zu vermeiden, um Sicherheitsproblemen aus dem Weg zu gehen.

Dieser Abschnitt enthielt eine Reihe von Informationen darüber, nach welchen Regeln PHP den globalen Namensraum mit externen Daten vermatschte. Diese Informationen sind nun glücklicherweise obsolet, und wurden daher gestrichen.

Die Empfehlung, möglichst keine globalen Variablen zu verwenden bleibt jedoch bestehen: Der Namensraum von Funktionen und Klassen ist wesentlich besser kontrollierbar. Es ist daher empfehlenswert, so viel Funktionalität als möglich in Funktionen oder Klassen abzulegen und dort kontrolliert Variablen als Funktionsparameter zu importieren.

Valid HTML 4.01! Valid CSS!

12.10. Vermeide globale Variablen
http://www.php-faq.de/q/q-sicherheit-global.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team