Klaus: PHP: register_globals per Script verhindern

Beitrag lesen

Hallo,
wie ihr ja alle wisst, ist register_globals = On oft ein doch großes Sicherheitsproblem.
Zwar ist dann die Software fehlerhaft, aber man kann ja nie ganz ausschließen, dass ein Programmierer alle Variablen vorher initialisiert hat.

Darum habe ich gerade in 'Besser PHP Programmieren' folgenden Script gefunden:

  
<?php  
function unregister_globals() {  
   //Variablen speichern  
   $REQUEST = $_REQUEST;  
   $GET = $_GET;  
   $POST = $_POST;  
   $COOKIE = $_COOKIE;  
   $FILES = $_FILES;  
   $ENV = $_ENV;  
   $SERVER = $_SERVER;  
   if(isset($_SESSION))  
      $SESSION = $_SESSION;  
  
   foreach($GLOBALS as $feld=>$wert) {  
      if($feld != "GLOBALS")  
         unset($GLOBALS[$feld]);  
   }  
  
   //Variablen zurückschreiben  
   $_REQUEST = $REQUEST;  
   $_GET = $GET;  
   $_POST = $POST;  
   $_COOKIE = $COOKIE;  
   $_FILES = $FILES;  
   $_ENV = $ENV;  
   $_SERVER = $SERVER;  
   if(isset($SESSION))  
      $_SESSION = $SESSION;  
}  
  
//Nur aufrufen wenn es auf ON steht  
if(ini_get('register_globals'))  
   unregister_globals();  
  
$username = $_GET['username'];  
  
if($username == "klaus") {  
   $log=1;  
}  
  
if($log == 1){  
   echo "Geheimer Bereich";  
}  
  
?>

Ohne die Funktion wäre es jetzt hier möglich in den Geheimen Bereich zu gelangen, auch wenn man den Username gar nicht kennt.
Einfach ?log=1 anhängen und schon ist man drinne.

Die Funktion löscht aber am Anfang alle Variablen, bis auf die superglobalen, so das ein Angreifer keinen x beliebigen, nicht initialisierten Variablen, verändern kann.

Ich wollte mal fragen was ihr davon haltet, wenn ein umfangreicher Script diese Funktion standardmäßig auf jeder Seite vorhher aufruft.
So könnte man ja Programmierfehler wie im Bsp-Script vorbeugen und abdämpfen.
Oder haltet ihr dies für eine schlechte Idee?
Klar dieser Script sollte keine schlechte Programmierung ausgleichen, sondern noch als extra Zusatzschutz für die Release-Version.

Wie seht ihr das?

Grüße
Klaus