Programando sin register_globals

Antes de la versión 4.2.0 de PHP, en el archivo php.ini, el parámetro de configuración register_globals aparecía por defecto como ON, lo que convertía todas las variables de los llamados Arrays Superglobales en variables de código.

De esta manera, la variable pasada por URL $_GET['nombre'] estaría disponible también como $nombre, de manera que podriamos modificar variables del interior del código PHP pasandolas por URL, veamos un ejemplo:

000
001
002
003
004
005
006

if ( $usuario ) {
echo "Usuario correcto";
} else {
echo "Usuario incorrecto";
}
?>


En este ejemplo, el visitante malintencionado podia pasar por URL (http://www.example.com/?usuario=1) la variable usuario y entrar al sistema sin contraseña.

Pero esto suponía un problema en la seguridad de nuestros scripts y paso a tener como valor por defecto OFF a partir de la versión 4.2.0.

Sin register_globals activado, deberemos modificar nuestra forma de trabajar con PHP, pues así ademas mejoraremos la seguridad de nuestros algoritmos, y para ello usaremos los llamados Arrays Superglobales, y el mismo código anterior pasará a ser:

000
001
002
003

setcookie ("nombre", "Eloi", time () + 7*24*60*60);
echo 'El valor de la cookie es: '.$_COOKIE["nombre"];
?>


De esta manera, además que el valor de 'nombre' no podrá ser enviado por URL (pagina.php?nombre=Benito), podremos trabajar con mas de una variable nombre ($nombre, $_COOKIE["nombre"], $_GET["nombre"]...).

No hay comentarios: