Register Globals nutzen

Aus netcup Wiki
Zur Navigation springen Zur Suche springen

Die PHP-Option "Register_Globals" ist, im Interesse aller Kunden von netcup, in einem Webhostingtarif deaktiviert. Diese Option stellt eine potentielle Sicherheitslücke für PHP-Scripte dar.

Wenn Sie dennoch Register_Globals nutzen müssen, da Sie z.B. ein altes PHP-Script nutzen, können Sie die übergebenen GET-Parameter trotzdem Global durch einen kleinen Trick ansprechen. Binden Sie hierzu in jeder Ihrer-PHP-Dateien als erstes folgenden Code ein:

<?php

if (!defined('PMA_GRAB_GLOBALS_INCLUDED')) {
   define('PMA_GRAB_GLOBALS_INCLUDED', 1);

   if (!empty($_GET)) {
       extract($_GET, EXTR_OVERWRITE);
   } else if (!empty($HTTP_GET_VARS)) {
       extract($HTTP_GET_VARS, EXTR_OVERWRITE);
   }

   if (!empty($_POST)) {
       extract($_POST, EXTR_OVERWRITE);
   } else if (!empty($HTTP_POST_VARS)) {
       extract($HTTP_POST_VARS, EXTR_OVERWRITE);
   }

   if (!empty($_FILES)) {
       while (list($name, $value) = each($_FILES)) {
           $$name = $value['tmp_name'];
       }
   } else if (!empty($HTTP_POST_FILES)) {
       while (list($name, $value) = each($HTTP_POST_FILES)) {
           $$name = $value['tmp_name'];
       }
   }

   if (!empty($_SERVER) && isset($_SERVER['PHP_SELF'])) {
       $PHP_SELF = $_SERVER['PHP_SELF'];
   } else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['PHP_SELF'])) {
       $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'];
   }

   if (isset($goto) && strpos(' ' . $goto, '/') > 0 && substr($goto, 0, 2) != './') {
       unset($goto);
   }


   if (get_magic_quotes_gpc()) {
       if (isset($db)) {
           $db = stripslashes($db);
       }
       if (isset($table)) {
           $table = stripslashes($table);
       }
   }

}

?>

WARNUNG: Nutzen Sie dieses Script nur, wenn Sie wissen das Ihre eigenen Scripte sicher sind. Sollten Ihre PHP-Scripte Sicherheitlücken bergen durch die ein Schaden entstehen kann, haften Sie für diese Schäden!

Tipp: Haben Sie eine "Header-Datei" die von jeder PHP-Datei eingebunden wird, brauchen Sie das obige Script nur in diese einbinden.