Harry: register_globals off, Frage dazu

Beitrag lesen

Holladiewaldfee,

Ganz einfach: Mit $_POST['bla'], $_GET['bla'] und $_COOKIE['bla'] weiß man _genau_, _woher_ eine Variable kommt. Ich habe noch nie $_REQUEST verwendet, weil es IMHO das Konzept von register_globals=off untergräbt.

Naja, es gibt einfach Situationen, da ist es einem a) vollkommen Wurscht, woher die Variablen kommen oder b) nicht vorauszusehen, ob die Variablen über ein GET- oder ein POST-Request ankommen.

Der Hauptgrund für register_globals=off ist ja so weit ich mich erinnern kann, der, die Session-Variablen aus dem globalen Namensraum rauszuhalten und damit zu verhindern, daß sie aus welchem Grund auch immer (meistens schlampige oder unvorsichtige (was an sich das gleiche ist) Programmierung) mit Variablen aus dem Request überschrieben werden.

Beispiel:

if($pass="ichbintoll")
 $authenticated = true;

if($authenticated==true)
 blafoo;

Nun gibt es einen Haufen Spezialisten, die $authenticated nicht vorher explizit als false definieren oder die erste Abfrage mit einer else-Verzweigung versehen. Dann würde einem Angreifer bla.php?authenticated=true Tür und Tor öffnen.

<form action="test.php?posted=yes" method=POST>

Ist so eine Konstruktion überhaupt erlaubt?

Ciao,

Harry

--
  Hä? Was? Signatur?! Kann man das essen?