PHP: Desactivar Register Globals

0 - , - 26/04/2010 10:48:13

Algunos proveedores de hosting no permiten desactivar las "register globals", lo que es una buena práctica de seguridad. Este código deshace los efectos de tener esta opción activada. Debe ejecutarse antes que cualquier otro código en tu script.

function unregister_GLOBALS()
{
   if (!ini_get('register_globals')) {
       return;
   }

   if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) {
       die('GLOBALS overwrite attempt detected');
   }

   $noUnset = array('GLOBALS',  '_GET',
                    '_POST',    '_COOKIE',
                    '_REQUEST', '_SERVER',
                    '_ENV',     '_FILES');

   $input = array_merge($_GET,    $_POST,
                        $_COOKIE, $_SERVER,
                        $_ENV,    $_FILES,
                        isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
   
   foreach ($input as $k => $v) {
       if (!in_array($k, $noUnset) && isset($GLOBALS[$k])) {
           unset($GLOBALS[$k]);
       }
   }
}

unregister_GLOBALS();  

Deja tu comentario

  • El comentario debe estar relacionado con el contenido de la entrada.
  • Comentarios ofensivos, con spam o con lenguaje inapropiado serán eliminados.

captcha