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"]...).
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario