Si accedes a un valor por el array $_GET, tienes la seguridad de que el origen de ese dato viene de la URL y no de un POST ni de una cookie. Sin embargo, todavia tienes que tener cuidado con el codigo que escribas. El ejemplo de siempre:
Código PHP:
<?php
if (("clave"==$_POST['clave']) && ("usuario"==$_POST['usuario'])) {
$ok=1;
}
if ($ok) {
echo "Bienvenido a la zona secreta.";
} else {
echo "Usted no esta autorizado";
}
?>
Esto lo completas con un cutre formulario con los dos campos, y lo pones en un servidor con register_globals a On. Y prueba a entrar desde el formulario. Parece que funciona bien. Y ahora prueba a entrar poniendo directamente la URL de ese codigo pagina.php?ok=1 y mira lo que pasa. Y prueba eso mismo en un servidor con register_globals a OFF.
De todas formas, es solo codigo con un bug. Un bug oculto, que puede que lo veas si tienes error_reporting a E_ALL. Un bug que es un agujero de seguridad. Con lo sencillo que es acostumbrarse a inicializar todas las variables que sabes que son locales:
Código PHP:
<?php
$ok=0;
if (("clave"==$_POST['clave']) && ("usuario"==$_POST['usuario'])) {
$ok=1;
}
if ($ok) {
echo "Bienvenido a la zona secreta.";
} else {
echo "Usted no esta autorizado";
}
?>
Hay que coger buenas costumbres a la hora de programar.
Saludos.