Wie gefährlich sind register_globals?
Sam
- php
0 Sven Rautenberg0 Sam
0 Tom
Moin
ich bin gerade draufgekommen, dass aktivierte register_globals ja ein extrem Sicherheitsloch sind. Ich habe bei einem Loginsystem eine Variable gesetzt, wenn der User sich eingeloggt hat, ein Gast hatte diese Variable also nicht. Auf manchen Seiten habe ich teilweise abgefragt ob diese Variable gesetzt ist, was man natürlich auch machen konnte indem man sie an die URL gehängt hat. Voll dangerous! 8o
Jedenfalls will ich das jetzt natürlich sofort ändern und habe mir überlegt, dass ich abfrage ob eine Variable in der $_SESSION gesetzt ist. Ist das sicher oder kann man auch irgendwie ?_SESSION['user'] an die URL hängen?
Gruß, Sam
Moin!
ich bin gerade draufgekommen, dass aktivierte register_globals ja ein extrem Sicherheitsloch sind.
Sie sind genau dann ein extremes Sicherheitsloch, wenn man zusätzlich noch äußerst dumm programmiert hat. Man kann auch mit register_globals=on sichere Skripte schreiben, aber die Mehrheit der Freizeitprogrammierer (und leider auch viele professionelle Arbeiter) sind sich der Gefahr nicht immer voll bewußt.
Ich habe bei einem Loginsystem eine Variable gesetzt, wenn der User sich eingeloggt hat, ein Gast hatte diese Variable also nicht. Auf manchen Seiten habe ich teilweise abgefragt ob diese Variable gesetzt ist, was man natürlich auch machen konnte indem man sie an die URL gehängt hat. Voll dangerous! 8o
Du hast das Problem erkannt.
Jedenfalls will ich das jetzt natürlich sofort ändern und habe mir überlegt, dass ich abfrage ob eine Variable in der $_SESSION gesetzt ist. Ist das sicher oder kann man auch irgendwie ?_SESSION['user'] an die URL hängen?
$_SESSION wird erst befüllt, wenn der Befehl session_start() ausgeführt wird. Insofern ist sichergestellt, dass sämtliche möglichen Inhalte, die jemand in $_SESSION hineinbringen könnte, danach sicher überschrieben sind.
Ansonsten empfehle ich: Probiere es einfach mal aus. Nur wer rumprobiert, findet was raus.
- Sven Rautenberg
Ich habs jetzt umgeschrieben jetzt klappt es wie ich es mir vorstelle.
Hello,
dieser Fehler kann eigentlich nur auftreten, wenn man sich nicht strikt an eine vernünftige Scripteinteilung hält:
1. includes, Definitionen von Konstanten und Variablen [1]
2. Deklaration und Implemtentation der Funktionen
3. PHP-"Main"
4. HTML-Output
[1] Die Definition von Variablen wird von naseweisen PHP-Programmierern immer wieder gerne weggelassen, weil "mans das in PHP doch nicht machen muss". Wer aber nicht initialisiert, muss sich aber nicht wundern, wenn er falsche Werte oder Typen eingeschleppt bekommt.
Liebe Grüße aus http://www.braunschweig.de
Tom