Validación o autenticación de usuarios en php

6
Validación o autenticación de usuarios en PHP (segunda parte) 05mar07 En esta segunda y última parte, les mostraré en que consisten los archivos login.php, autenticacion.php, aplicacion.php y un cuarto archivo salir.php El primer archivo, login.php, es bastante simple. Sólo se trata de un simple condicional que verifica la existencia o no de una variable al principio del script que, dependiendo del resultado, muestra un texto de advertencia en un color o en otro. La última parte del script es un formulario que al introducir los datos redirigirá la página a autenticacion.php. login.php <html> <head> <title>Autenticación PHP</title> </head> <body> <h1>Formulario de autenticación</h1> <?if ($_GET["errorusuario"]=="si"){?> <font color="red"><b>Datos incorrectos</b></font> <?}else{?> Introduce tu nombre de usuario y contraseña <?}?> <form action="autenticacion.php" method="POST"> <table border="0"> <tr><td>Nombre de usuario:</td><td><input name="usuario" size="25" value=""/></td></tr> <tr><td>Contraseña:</td><td><input name="contrasena" size="25" type="password"/></td></tr> <tr><td/><td><input type="submit" value="Inicio de sesión"/></td></tr> </table> </form> Para ingresar, debés ingresar <b>usuario</b> en el 1er campo y <b>123</b> en el 2do. </body> </html>

Transcript of Validación o autenticación de usuarios en php

Page 1: Validación o autenticación de usuarios en php

Validación o autenticación de usuarios en PHP (segunda parte)

05mar07

En esta segunda y última parte, les mostraré en que consisten los archivos login.php, autenticacion.php, aplicacion.php y un cuarto archivo salir.php

El primer archivo, login.php, es bastante simple. Sólo se trata de un simple condicional que verifica la existencia o no de una variable al principio del script que, dependiendo del resultado, muestra un texto de advertencia en un color o en otro. La última parte del script es un formulario que al introducir los datos redirigirá la página a autenticacion.php.

login.php

<html><head><title>Autenticación PHP</title></head><body><h1>Formulario de autenticación</h1><?if ($_GET["errorusuario"]=="si"){?><font color="red"><b>Datos incorrectos</b></font><?}else{?>Introduce tu nombre de usuario y contraseña<?}?><form action="autenticacion.php" method="POST"><table border="0"><tr><td>Nombre de usuario:</td><td><input name="usuario" size="25" value=""/></td></tr><tr><td>Contraseña:</td><td><input name="contrasena" size="25" type="password"/></td></tr><tr><td/><td><input type="submit" value="Inicio de sesión"/></td></tr></table></form>Para ingresar, debés ingresar <b>usuario</b> en el 1er campo y <b>123</b> en el 2do.</body></html>

Page 2: Validación o autenticación de usuarios en php

El otro archivo es el autenticacion.php. Es también bastante simple.

autenticacion.php

<?//vemos si el usuario y contraseña son válidosif ($_POST["usuario"]=="usuario" && $_POST["contrasena"]=="123"){//usuario y contraseña válidos//se define una sesion y se guarda el dato session_start();$_SESSION["autenticado"]= "SI";header ("Location: aplicacion.php");}else {//si no existe se va a login.phpheader("Location: login.php?errorusuario=si");}?>

Como habrán visto, se hace uso de sesiones para manejar una variable que se utilizará para indicar si el usuario se logeó en forma exitosa o no.

En estos scripts no trabajo con una base de datos para no alargar demasiado este post, pero lo que aquí sí interesa es la recuperación de las variables de usuario y la clave correctas para compararlas con las que se ingresan desde el formulario. Aquí directamente comparamos los campos ingresados del formulario con dos variables ya definidas.

En caso de ingresar los datos correctos, se crea una variable de sesion (autenticado -que será leída más tarde desde los scripts de la aplicación segura-) y se redirigirá la página a aplicacion.php. En caso de ingresar datos incorrectos, no se crea esa variable de sesion y se pasa una variable de error a login.php que sirve para mostrar en pantalla que ingresamos mal los datos.

Antes de mostrar aplicacion.php, voy a mostrarles en que consiste el bloque de seguridad que estará dentro de aplicacion.php en forma de un include.

bloqueDeSeguridad.php

<?//Inicio la sesiónsession_start();//COMPRUEBA QUE EL USUARIO ESTA AUTENTICADOif ($_SESSION["autenticado"] != "SI") {//si no existe, va a la página de autenticacionheader("Location: login.php");//salimos de este scriptexit();}?>

En ésta parte sólo se verifica que exista la variable de sesion (autenticado). Si existe no hace nada y continúa, y si no existe, redirige la página a login.php

Page 3: Validación o autenticación de usuarios en php

Ahora pasamos a ver el script aplicacion.php. Este contiene el bloque de seguridad al principio, de tal manera de que sea lo primero que se ejecute en el script… El contenido de la aplicación segura es trivial.

aplicacion.php

<?include ("bloqueDeSeguridad.php");?><html><head><title>Aplicación segura</title></head><body><h1>Ahora estás en una aplicación segura</h1><br><br>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br><br><br><a href="salir.php">Hacé click aquí para salir</a></body></html>

Es interesante comprobar que pasa si se tipea en el browser directamente aplicacion.php. Podremos comprobar que no accede a la misma. Esto es porque en este script, al princio está el bloque de seguridad que, al no ver la variable de sesion porque no existe o porque si existe su valor es incorrecto, en vez de continuar con el script de aplicacion.php, corta todo ahí mismo y redirige a login.php

Por último para salir de la sesion, es decir para destruir la variable de sesion, se puede hacer clik en salir.php. La razón por la que podríamos desear destruir esa variable es que no quisiéramos que algún intruso aproveche el descuido de un usuario válido, que al retirarse momentáneamente de su computadora, aquél utilice ésa misma computadora para acceder a contenidos seguros.

salir.php

<?session_start();session_destroy();?><html><head><title>Contenido no seguro</title></head><body>Ahora estás fuera de la aplicación segura.

Page 4: Validación o autenticación de usuarios en php

<br><br><a href="login.php">Autenticar usuario</a></body></html>

Eso es todo.

Se debe saber que la forma en se implementó este sistema de seguridad es bastante discutible. Por ejemplo, la variable de sesion (autenticado) es bastante simple de “adivinar” y por lo tanto, tendríamos que crear una variable de sesion con un nombre un poco mas complejo, como ser “HjkrTS3986Yg444aASds”.