RegisterGlobals, was ist das?
Kategorie PHP & MySQL
Datum: 30.05.2008, 22:30 - Autor: Manko10
RegisterGlobals ist ein Überbleibsel aus alten Zeiten. Ein Stück Nostalgie, das Opa bei sich zu Hause als Trophäe aus jungen Jahren an der Wand hängen hat. Genau zwischen Hirsch und Eber.Es gab Zeiten, zu denen PHP noch nicht in der Version 5 vorlag. Das ist lange, lange her. Für Programmierer fast eine ganze Zeitepoche. Damals mauserte sich PHP gerade von den niedlichen Personal Homepage Tools allmählich zu einer Programmiersprache.
Zu dieser Zeit gab es eine hübsche und possierliche Funktionalität, mit der man einfach und bequem von außen übergebene Variablen im Skript benutzen konnte.
Nun kam Tante Ilse, öffnete ihren Internet Explorer 5.55 und rief die Seite ihres Neffen Heinrich auf, auf der jener Goldfische zum Verkauf anbot.
Um einen besonders nett aussehenden rosa Goldfisch mit grünen Flossen zu bestellen, füllte sie ein kleines Formular aus und sandte es an den Server. Dort wurde die Anfrage dann durch ein kleines PHP-Skript verarbeitet und gespeichert.
| PHP-Code: | ||
|---|---|---|
|
Doch nun trat ein Problem auf. Heinrich hatte sich aus Versehen bei einen Ausbau des Skripts vertan. Er benutzte die Variable $name aus Gedankenlosigkeit zwischendurch für andere Zwecke. Und schwupps... stellte sich der lustige Effekt ein, dass die Daten, die an das Skript übergeben wurden, vernichtet waren.
Doch abgesehen von der moderaten Lästigkeit stellt sich auch die Frage der Sicherheit. Was passiert, wenn man im Skript eine Variable verwendet, ohne sie vorher initialisiert, also mit einem Wert vorbelegt zu haben?
So wäre es jedem möglich, von außen schädliche Inhalte in das Programm einzuschleusen.
Das klingt doch amüsant, oder?
Gehen wir weiter in der Geschichte.
Wir schreiben das Jahr 2001 - die gesamte PHP-Welt ist von Sicherheitslücken besetzt. Die ganze PHP-Welt?
Ja, die ganze PHP-Welt. Eine Neuerung ist erforderlich. Es kommt also die brandneue PHP-Version 4.1.0 und eine Reihe von Arrays, die sogenannten Superglobals werden eingeführt. Diese haben recht witzige Namen, die komischerweise sogar bezeichnend für ihre Bedeutung sind. Man nannte sie $_GET, $_POST, $_COOKIE, $_REQUEST, $_FILES, $_SERVER, $_SESSION und $_ENV
Mithilfe dieser global verfügbaren Variablen war es Heinrich nun möglich, seine Anwendung ein wenig umzuschreiben:
| PHP-Code: | ||
|---|---|---|
|
Welch ein Glück, dass es schlaue Köpfchen gibt. Wenn man nur gründliche genug suchte, fand man in der php.ini (also der Konfigurationsdatei jener Programmiersprache, über die ich schon im gesamten Artikel geschrieben habe) eine Einstellung, genannt register_globals. Diese war per default auf On gesetzt, doch konnte man sie getrost auf Off setzen und schon war Heinrich glücklich gemacht.
Findige Systemadministratoren brauchte es aber, damit diese Möglichkeit auch genutzt wurde, sodass sie ab dem nächsten Main-Release, also PHP 4.2.0, standardmäßig auf Off gestellt wurde, wie sie es bis heute noch ist.
Das war im Jahre 2002, also vor 6 Jahren.
Kommen wir in die Gegenwart zurück. Wir befinden uns im Jahre 2008 und in Zeiten von PHP 5, während PHP 6 bereits im Geburtskanal steckt. Alles scheint sich zum Guten oder wenigstens zum Besseren zu wenden.
Doch da! Eine Flut von Usern überschwemmt die PHP-Foren, welche die Dämme kaum noch halten können. Die Pest ist ausgebrochen!
Nein, doch nicht.
Dank einer nicht zu verachtenden Masse an genialen Tutorials, geschrieben von Old-School-Programmierern, gewinnt RegisterGlobals wieder die Oberhand.
Klagen, nichts als Klagen! Bittschriften, nichts als Bittschriften! Und vor allem eine Menge User, die verwirrt feststellen, dass ihre Skripte gar nicht funktionieren, wie es in den (zumeist wohl seit mehr als einem halben Jahrzehnt nicht mehr gepflegten) Tutorials beschrieben ist.
Vielleicht haben einige dieser User ihre PHP-Lektüre auch im Antiquariat oder im Museum für Weltliteratur gekauft...
Also was tun? Lynchen, morden, meucheln oder aufhängen?
Ein anderer Vorschlag wäre eine Kennzeichnung solcher Tutorial-Seiten, wie man es schon bei ähnlichen Suchtmitteln getan hat:


Übrigens: habe ich eigentlich schon erwähnt, dass das Flag register_globals mittlerweile als deprecated, also missbilligt, eingestuft wurde und in PHP 6 vollständig entfernt wird? Das wird sicher ein Spaß.
Der geneigte Leser kann sich ja nun nach der Lektüre dieses Artikels im Netz umsehen und eine Abmahnwelle gegen Verbreiter von RegisterGlobals starten. Ich distanziere mich hiermit jedoch ausdrücklich von jeglichem Mitwissen und beende damit diesen Artikel.
Seiten: (1/1) 1
2 Kommentare:
Köstlich
Datum: 26.08.2008, 17:22 - Autor: Gast
ich geh eine Zitrone auslutschen, damit das dämliche Grinsen aus meinem Gesicht verschwindet :-)Datum: 27.12.2008, 14:37 - Autor: Gast
tja, da ist wohl was wahres dran.