Re: globals
Vorab… du hast alles richtig verstanden!
Original geschrieben von Steglich
Wie kann jemand auf globale Variable von außen zugreifen?
Wenn man die Vars mit datei.php?varname=value übergibt. Dann wäre der Inhalt von $varname==value. Wenn du das in der Browserzeile änderst kannst du zb $varname==nasenmann definieren.
Original geschrieben von Steglich
Da php ja geparst wird, weiß er doch die Namen der Variablen gar nicht, außer sie werden über dateiname.php?variablenname weitergegeben.
[/B]
Siehe oben. Wenn die Variablen so wie du sagst weitergegeben werden dann sieht man ja Namen und Wert in der Browserzeile. Teilweise erkennt man auch im Quelltext bei Formularen den Varnamen und Wert (zb input type="hidden" name="varname" value="nasenmann").
Original geschrieben von Steglich
Aber bei der post und get Methode dürfte doch nichts schief gehen, oder?
Und was bedeutet in diesem Zusammenhang, dass die register globals = off sind?
Genau. Wenn Register_globals=Off ist dann kann man Variablen nicht mehr mit datei.php?varname=wert übergeben, sondern muss entweder GET (über die Browserzeile) bzw POST (über HTTP Post Mechanismus) verwenden. Die GET Variante ist auch zu manipulieren, daher empfielt sich immer die Verwendung von POST. Und ebenfalls dann auch nur Übernahme mit POST und nicht etwas mit REQUEST.
Sowie dein Script oben gecodet ist, ist alles kein Problem und funktioniert auch mit globals=Off.
Generell brauchst du dir aber auch meist nur sicherheitstechnische Sorgen zu machen, wenn du mit SQL arbeitest, Stichwort SQL Injection. Dort müsstest du sicherheitsrelevaten Daten am besten über ein Formular mit inputtype="hidden" und POST übergeben. Man sieht zwar im Quelltext Varname und Value, kann aber nichts injezieren
Mal ein kleines Beispiel:
Du hast ein Formular um eine Email zu versenden. Der Mailbefehl steht in einer 2. Datei mit Namen mail.php.
Wenn du nun die Daten unsicher übergibst, könnte in der Browserzeile folgendes stehen:
mail.php?empfänger=mail@domain.de?nachricht=blabla?betreff=blabla (etc)
Ich könnte jetzt, da der Empfänger als Var übergeben wird, eine beliebige Empfängeradresse eintragen und somit über dein Kontaktformular an jeden böse Emails oder Spam verschicken. Den Ärger hast du dann erst einmal am Hals.
Besser wäre die Empfängeradresse mit
<input type="hidden" name="empfänger" value="mail@domain.de">
und mittels POST zu übergeben.
Schon ist chändlicher Chabernack ausgeschlossen.
Übrigens kannst du in der php.ini direkt mal register_globals=off definieren, falls nicht schon geschehen.
Liebe Grüße
Yves