Vous êtes sur la page 1sur 12

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLGICOS COMPUTACIN

Nombre de la Practica: Lugar de Ejecucin: Tiempo Estimado: MATERIA: DOCENTES: GUIA DE LABORATORIO #11 Autenticacin de usuarios y sesiones Centro de cmputo 2 horas con 30 minutos Aplicaciones Prcticas de Software II Ing. Ricardo Ernesto Elas Guandique

CICLO: 01/2009

I. OBJETIVOS Que el estudiante: Comprender el proceso de autenticar a un usuario para darle o negarle acceso a una pgina web Emplear la tcnica de redireccin para redirigir a los usuario a una pgina distinta a la solicitada si no se autentican correctamente Emplear variables de sesin para proteger las pginas web de un sitio. Hacer uso de funciones de PHP para manejo de sesiones y de la matriz superglobal $_SESSION II. INTRODUCCION TEORICA Autenticacin de usuarios La autenticacin de usuarios es uno de los retos importantes a nivel de pginas web ya que este proceso permitir tener sitios web mucho ms seguros, sobre todo si estos manejan informacin confidencial. La autenticacin o autentificacin consiste principalmente en verificar la identidad del usuario que pretende ingresar a un sitio web; es decir, comprobar que es quien dice ser. Se tienen varias estrategias de autenticacin de usuarios, entre ellas: a) Autenticacin HTTP con Apache Web Server b) Autenticacin HTTP con PHP c) Autenticacin con variables de sesin de PHP Aunque el primero y segundo mtodo pueden resultar tiles para proteger carpetas o algunos scripts, se vuelven poco funcionales a medida que el sitio crece en tamao. Por esta razn para sitios web complejos con un nmero muy grande de scripts lo recomendable es utilizar el mtodo de autenticacin con sesiones auxiliado con datos de usuarios almacenados en bases de datos. Esto es el mejor mtodo de autenticacin de usuarios a nivel de web. Autenticacin HTTP con Apache Web Server El servidor Apache incorpora una gran cantidad de mdulos de autenticacin diferentes que pueden ser utilizados para controlar el acceso a los archivos y pginas web alojadas en dicho servidor. El mdulo ms sencillo de utilizar es el mdulo mod_auth que opera comparando pares de nombre y contrasea con lneas de un archivo de texto incluido en el servidor, donde aparecen los usuarios y contraseas de los usuarios autorizados a navegar en una carpeta del servidor. Las directivas necesarias para configurar el acceso con autenticacin deben ser introducidas en el archivo de configuracin principal del servidor (para nuestro caso Apache, en el archivo httpd.conf) o en archivos de configuracin almacenados en carpetas o directorios especficos (.htaccess).

1 / 12

Gua #11: Autenticacin de usuarios y sesiones

En esta prctica de laboratorio abordaremos el segundo mtodo. Para esto se requerir que en el archivo de configuracin del servidor web (httpd.conf) se edite dentro de la seccin <Directory /> </Directory> de dicho archivo la lnea donde aparece la directiva AllowOverride, la cual es utilizada para indicar cules directivas, en caso de existir, pueden ser colocadas en los archivos de configuracin por directorios o carpetas. Localice la seccin siguiente dentro del archivo de configuracin de su servidor httpd.conf:
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all Satisfy all </Directory>

La lnea destacada en negrita y color diferente debe ser cambiada por la siguiente: AllowOverride AuthConfig, de modo que se archivo de configuracin debera lucir de la siguiente forma:
<Directory /> Options FollowSymLinks # AllowOverride None AllowOverride AuthConfig Order deny,allow Deny from all Satisfy all </Directory>

Donde se ha colocado en comentario la lnea original AllowOverride None y se ha agregado la nueva lnea AllowOverride AuthConfig. Luego, guarde esta modificacin y reinicie el servidor web para que el cambio tenga efecto. El siguiente paso es la creacin del archivo .htaccess, en donde se proporcionar la informacin sobre quines pueden tener acceso al sitio web (o al directorio actual y sus subdirectorios). Un archivo .htaccess es bsicamente un archivo de texto que contiene, entre otras cosas: un nombre para el rea restringida que se especifica con una directiva AuthName "nombre del rea". A continuacin debe indicarse con una directiva AuthType el tipo de autenticacin. Por ejemplo: AuthType Basic. El siguiente paso debe ser indicarle a Apache dnde est alojado el archivo con las credenciales del usuario (nombre y contrasea). Esto se hace con la directiva AuthUserFile ruta_archivo_credenciales. Ms adelante crearemos este archivo de credenciales. Por ahora, debemos tener en cuenta que no es recomendable almacenar este archivo de credenciales de usuario(s) dentro de la carpeta web del servidor, si no en un nivel superior. En nuestro caso, sera afuera de la carpeta www. Pero garantizando que se tiene acceso a la carpeta en la que se guardar el archivo de credenciales. Otro paso sera indicarle a Apache qu usuarios sern admitidos en el sitio web. Podemos indicar esto con la directiva require valid-user. Un ltimo detalle, elegante por cierto, sera cargar una pgina de rechazo a un usuario que intente cargar una pgina sin proporcionar las credenciales o con credenciales no vlidas. Para esto se debe crear la pgina web e indicar en el archivo .htaccess cul es esa pgina. Debe utilizarse una directiva ErrorDocument 401 /ruta/pagina.html para realizar esta funcionalidad. Al unir todo lo anterior nos resulta un archivo como el siguiente:
AuthName "Musica Salsa" AuthUserFile C:/wamp/privado/users.txt AuthType Basic require valid-user ErrorDocument 401 /carpetasegura/rejection.html

Slo falta explicar cmo se crear el archivo con las credenciales. El aspecto de este archivo ser similar a las lneas que se muestran a continuacin:
ricardo:$apr1$Ri5.....$nrK6qKm0oT1cQUS8m6HcZ1 william:$apr1$ek5.....$qZJoVODN8374zOpAXAbXZ1

Aplicaciones Prcticas de Software II

Gua #11: Autenticacin de usuarios y sesiones

Para su creacin se debe utilizar un programa ejecutable denominado htpasswd.exe que se almacena en la carpeta bin de su directorio Apache. Para distribuciones de Apache que viene junto con el Wamp Server, esta carpeta est en Apache2/bin. Por lo que para ejecutarlo debe cambiarse al directorio bin y desde all digitar el comando que se muestra a continuacin en la consola:

Como puede observar el comando es htpasswd, a continuacin se proporcionan algunos parmetros opcionales. Para el caso del comando anterior se ha utilizado m, para que se encripten las contraseas ingresadas por el usuario, y c para crear un nuevo archivo. El resto es la ruta y el nombre del archivo. Puede observar que se est subiendo dos niveles desde la ubicacin actual, que es c:\wamp\Apache2\bin. Es decir, se crear una carpeta denominada privado dentro de la carpeta Wamp. El nombre del archivo ser users.txt, tal y como se especific en el archivo de configuracin .htaccess. Para agregar nuevos usuarios al mismo archivo, debe omitir el parmetro c y utilizar siempre m para que las contraseas se almacenen de forma encriptada. Autenticacin HTTP con Apache Web Server Este mtodo consiste en comprobar las credenciales del usuario dentro del mismo cdigo PHP. En otras palabras no ser necesario modificar ningn archivo de configuracin dentro del servidor web. Sin embargo, ser necesario enviar ciertos encabezados especiales al servidor web. Estos encabezados son:
header("WWW-Authenticate:Basic realm=\"Protected Area\""); header("HTTP/1.0 401 Unauthorized");

El cdigo 401 del protocolo HTTP significa no autorizado, ante lo cual el navegador debera presentar un dilogo de autenticacin. Algunos navegadores lo mostrarn un nmero infinito de veces hasta que se introduzcan los datos correctos, otros, como el Internet Explorer solo lo harn 3 veces, despus de lo cual lanzar el mensaje de usuario no autorizado. Para realizar este tipo de autenticacin es preciso utilizar la matriz superglobal $_SERVER para examinar el valor de sus ndices PHP_AUTH_USER y PHP_AUTH_PW que contienen el usuario y la contrasea que ha introducido un usuario en la ventana modal del explorador. Si se desea un script que tome en cuenta si se est ejecutando PHP en un servidor web Apache o Internet Information Server, deber ejecutar un cdigo que conllevar mayor complejidad, sobre todo por el uso de otra variable de servidor como $_SERVER['HTTP_AUTHORIZATION'], si es que est disponible. Esta variable contiene una cadena que inicia con Basic y luego de un espacio en blanco, una cadena codificada en base 64, con el nombre de usuario y la contrasea ingresada por este. El cdigo puede ser como el mostrado a continuacin:
<?php if(isset($_SERVER['PHP_AUTH_USER'])){ $user = $_SERVER['PHP_AUTH_USER']; $pass = $_SERVER['PHP_AUTH_PW']; } elseif(isset($_SERVER['HTTP_AUTHORIZATION'])){

Aplicaciones Prcticas de Software II

Gua #11: Autenticacin de usuarios y sesiones

if(substr($_SERVER['HTTP_AUTHORIZATION'], 0, 5) == "Basic"){ $userpass = split(":", base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); $user = $userpass[0]; $pass = $userpass[1]; } } if(isset($user)){ echo "Username / Password: "; echo htmlspecialchars($user) . "" . htmlspecialchars($pass); } else{ header("WWW-Authenticate:Basic realm=\"Protected Area\""); header("HTTP/1.0 401 Unauthorized"); } ?>

Sesiones

Una definicin simple de lo que es una sesin sera el tiempo que un usuario permanece conectado a un sitio web. Una definicin ms tcnica y relacionada a la programacin sera: una sesin es un bloque de informacin que almacena todo tipo de variables y valores relacionados con los usuarios y sus visitas a un sitio web en particular. Lo que una sesin posibilita es la capacidad de guardar variables (incluyendo matrices y clases) entre ejecuciones de scripts para poder acceder a estas desde cualquier pgina donde se inicie sesin. Una sesin contiene un identificador en forma de cadena de caracteres para asociarlo al usuario que accede al sitio web. Esta cadena es conocida como el ID de sesin e identifica de forma nica cada sesin. Dentro de un script PHP este identificador nico puede ser referido mediante la siguiente cadena SID. El seguimiento de los usuarios mediante sesiones puede hacerse de dos formas: 1. Almacenando y recuperando el ID de sesin (SID) en una cookie. El funcionamiento se puede resumir as, cuando un usuario visita el sitio se genera un SID y se almacena dentro de una cookie enviada de forma automtica por el servidor web a cada cliente que accede al sitio. Este mtodo puede fallar en el caso que el usuario deshabilite las cookies. Adems, representa un riesgo de seguridad porque alguien malintencionado podra falsificar las cookies y conseguir un acceso virtual a la cuenta de cualquier usuario registrado. 2. Incluyendo el ID de sesin (SID) en la URL. Este es un mtodo comparativamente ms difcil que el anterior, pero permite utilizar esta caracterstica en cualquier situacin, incluso cuando las cookies estn deshabilitadas. Puede aadirse el SID (manualmente o de forma automtica) a la URL actual. Para incluir manualmente el SID a la URL debe escribirse una instruccin como la que se muestra en el siguiente ejemplo: <A href=test.php?<?=SID?>>Haga clic aqu para visitar la siguiente p&aacute;gina</A> Para hacer que el SID se aada de forma automtica a la URL debe compilar PHP con la siguiente opcin:
Enable-trans-id

El funcionamiento de una sesin se puede describir de la siguiente forma: cuando un usuario se conecta a un sitio web, el ID de sesin (SID) se enva a la computadora del cliente. Si se tiene habilitado el uso de cookies en el cliente el SID se enva al usuario en una cookie llamada PHPSESSID. En el servidor tambin es almacenado ese SID en forma de archivo temporal

Aplicaciones Prcticas de Software II

Gua #11: Autenticacin de usuarios y sesiones

La necesidad de las sesiones surge de la naturaleza del protocolo HTTP, que es un protocolo sin estado, lo que significa que no dispone de un mtodo incorporado para conservar el estado entre dos transacciones. Esto es lo que provoca que cuando un usuario solicita una pgina y luego otra, no exista manera de que el servidor entienda que ambas solicitudes provienen de un mismo usuario, de modo que todas las variables de un script son reestablecidas siempre despus de una solicitud. El control de la sesin consiste en poder realizar un siguimiento del usuario mientras se mantenga navegando por el sitio web, permitiendo mostrar contenido de las pginas en funcin de su nivel de autorizacin o de sus preferencias personales. Los pasos bsicos para poder implementar un sitio web con manejo de sesiones son los siguientes: Iniciar la sesin Registrar las variables de sesin necesarias Utilizar las variables de sesin en todos los scripts que lo requieran Anular las variables registradas Eliminar la sesin Iniciar la sesin Existen dos formas de iniciar sesiones en PHP: La primera es utilizando la funcin session_start(), con la cual se puede crear un identificador de sesin nuevo, o retomar un id de sesin creado previamente. Se requiere que utilice la llamada a esta funcin al inicio de todas las secuencias de comando que vayan a utilizar sesiones. La segunda forma, consiste en configurar el archivo php.ini para que inicie sesiones de forma automtica cuando alguien visite el sitio. Para ello se debe asignar el valor de uno a la variable de configuracin session.auto_start, cuyo valor por defecto es cero. Este mtodo tiene el inconveniente que no permite utilizar objetos como variables de sesin. Registrar las variables de sesin Debe utilizarse la matriz superglobal $_SESSION para crear una variable de sesin. Una variable de sesin se crea cuando se coloca como ndice de la matriz superglobal $_SESSION el nombre de alguna variable, pero sin el smbolo de dlar. Esto es similar a como se crean variables pasadas por la URL con la matriz superglobar $_GET o campos de formulario con el mtodo POST utilizando la matriz superglobal $_POST. Un ejemplo de registro de una variable de sesin es el siguiente:
$_SESSION['estado'] = 1; $_SESSION['page'] = $pagina; $_SESSION['nameusr']=$row['nom'] . " " . $row['ape']; $_SESSION['perfil'] = $row->perfil; $_SESSION['photo'] = $preferencias['img'];

Utilizar variables de sesin Es preciso para poder acceder a los valores almacenados en variables de sesin iniciar el script con una llamada a la funcin session_start(). Si se utiliza un objeto como variable de sesin, es preciso incluir la definicin de la clase antes de invocar a la funcin session_start() para volver a cargar las variables de sesin. De esta forma PHP sabe cmo reconstruir el objeto de sesin. Debe prestar atencin a verificar si las variables de sesin estn registradas o no. Puede utilizar para ello las funciones isset() o empty(). Por ejemplo:
isset($_SESSION['name']);

Aplicaciones Prcticas de Software II

Gua #11: Autenticacin de usuarios y sesiones

Anular las variables de sesin Si ya no se va a utilizar una variable de sesin es aconsejable anular su registro. Esto ayudar a liberar recursos del servidor. Para anular el registro de una variable de sesin puede utilizar la funcin unset. Ejemplo:
unset($_SESSION['page']);

NOTA IMPORTANTE: El uso de las funciones session_unregister() y session_unset() ya no es necesario ni recomendable. Para anular el registro de todas las variables utilice:
$_SESSION = array();

Eliminar la sesin Cuando la sesin se termine debe anular el registro de todas las variables de sesin y a continuacin invocar la funcin session_destroy(). La llamada a esta funcin borra el id de sesin. IMPORTANTE: A pesar de que es una prctica recomendada anular el registro de variables de sesin y destruir la sesin, cuando se cierre la ventana del navegador las sesiones sern destruidas automticamente por PHP cuando se acabe el script o cuando se cierre la ventana del navegador.

III. MATERIALES Y EQUIPO Para la realizacin de la gua de prctica se requerir lo siguiente: No. Requerimiento 1 Gua de prctica #11: Autenticacin de usuarios y sesiones 2 Computadora con Wamp Server y PHP Designer 2007 instalado 3 Memoria USB o disco flexible

Cantidad 1 1 1

IV. PROCEDIMIENTO Digite los scripts que se enumeran a continuacin y gurdelos en el formato apropiado como pginas .html o como scripts .php segn se indique. Ejercicio #1: Este ejercicio mostrar como implementar autenticacin htaccess con Apache. 1. El primer paso ser abrir el archivo de configuracin de Apache, donominado httpd.conf. Para ello, puede ejecutar el Wamp y hacer clic sobre el iconco en el rea de notificacin. Como se muestra a continuacin:

Aplicaciones Prcticas de Software II

Gua #11: Autenticacin de usuarios y sesiones

2.

Apunte hacia la opcin Config files y al desplegarse el submen, haga clic sobre httpd.conf.

3.

Al abrirse el archive busque la lnea de cdigo donde aparezca AllowOverride None, dentro de unas directivas <Directory /> </Directory> y cambie esa lnea por una que muestre lo siguiente: AllowOverride AuthConfig. De modo que el bloque completo tenga las siguientes lneas de cdigo:
<Directory /> Options FollowSymLinks AllowOverride None AllowOverride AuthConfig Order deny,allow Deny from all Satisfy all </Directory>

4. 5.

Guarde esta modificacin, cierre el archivo de configuracin httpd.conf y reinicie los servicios del WampServer. Cree una carpeta dentro de la carpeta web (www) denominada carpeta segura y copie los archivos incluidos en los recursos de la gua de prctica #11 dentro de esta.

6.

Edite el archivo .htaccess para que muestre las siguientes lneas de cdigo:

7. 8. 9.

Guarde las modificaciones en el archivo .htaccess y luego cirrelo. Ahora se crear el archivo de contraseas que se ha indicado en el archivo .htaccess anterior. Para ello se crear primero una carpeta denominada privado dentro de la carpeta wamp. Abra una ventana de consola del sistema utilizando el botn de Inicio y luego buscando en Accesorios o desde una ventana ejecutar digitando cmd dentro de sta. Al abrir la consola digite los siguientes comandos luego de ubicarse en el siguiente directorio C:\Wamp\Apache2\bin: C:\Wamp\Apache2\bin\htpasswd m c ../../privado/users.txt aps2 Cuando se le solicite la constrasea para este usuario, digite tecnologico y, luego, vuelva a confirmarla. C:\Wamp\Apache2\bin\htpasswd m ../../privado/users.txt alumno

Aplicaciones Prcticas de Software II

Gua #11: Autenticacin de usuarios y sesiones

10. Al solicitarte la constrasea digita fetudb y confirmala nuevamente. 11. Abre el navegador de tu preferencia y digita una URL hacia una pgina que est contenida dentro de la carpeta protegida en donde se cre el archivo .htaccess. 12. Ingresa uno de los usuarios y contraseas incluidos en el archivo users.txt.

Ejercicio #2: El siguiente ejercicio implementa la autenticacin bsica con PHP. Script 1: autenticacionbasica.php
<?php //Si el usuario est usando IIS, se necesita establecer //las variables globales $PHP_AUTH_USER y $PHP_AUTH_PW if(substr($_SERVER['SERVER_SOFTWARE'], 0, 9) == 'Microsoft' && !isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW']) && substr($_SERVER['HTTP_AUTHORIZATION'], 0, 6) == 'Basic '){ list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); } //Si no se est usando un archivo con usuario y contrasea en el servidor //utilizar estos datos de usuario y contrasea if($_SERVER['PHP_AUTH_USER'] != 'aps2' || $_SERVER['PHP_AUTH_PW'] != 'tecnologico'){ //Si el visitante no ha introducido sus datos o si los //datos proporcionados no son correctos redirigirlo a //la ventana de autenticacin bsica HTTP header('WWW-Authenticate: Basic realm="Realm-Name"'); if(substr($_SERVER['SERVER_SOFTWARE'],0,9) == 'Microsoft'){ header('Status: 401 Unauthorized'); } else{ header('HTTP/1.0 401 Unauthorized'); } $msgden = "<h2 style=\"font-family:Impact;font-size:15pt;color:Red;\">"; $msgden .= "No tienes acceso a este sitio</h2>"; echo $msgden; } else{ //Si estamos ac es porque el usuario introdujo los datos correctos $msgauth = "<h2 style=\"font-family:Impact;font-size:15pt;color:Green;\">"; $msgauth .= "Tus datos son correctos. Tienes acceso a este sitio</h2>"; echo $msgauth; } ?>

Ejercicio #3: script 1: secret.php


<?php @$name = trim($_POST['name']); @$password = trim($_POST['password']); if(empty($name) || empty($password)){ ?> <h1>Ingrese sus datos para ingresar</h1> Esta es una p&aacute;gina protegida <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST"> <label for="name"> Usuario: </label> <input type="text" name="name"><br> <label for="pass"> Usuario: </label> <input type="password" name="password"><br> <input type="submit" value="Entrar">

Aplicaciones Prcticas de Software II

Gua #11: Autenticacin de usuarios y sesiones

</form> <?php } else if($name == 'user' && $password == 'pass'){ //El usuario y contrasea son correctos $msgauth = "<h2 style=\"font-family:Impact;font-size:15pt;color:Green;\">"; $msgauth .= "Tus datos son correctos. Tienes acceso a este sitio</h2>"; echo $msgauth; } else{ $msgden = "<h2 style=\"font-family:Impact;font-size:15pt;color:Red;\">"; $msgden .= "No tienes acceso a este sitio</h2>"; echo $msgden; } ?>

Ejercicio #3: El siguiente ejemplo implementa la autenticacin de usuarios utilizando el mtodo de las variables de sesin. Archivo 1: login.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Autenticacin PHP</title> <style type="text/css"> table { background-color:GreenYellow; } label { font-family:"Century Gothic"; font-weight:500; font-style:italic; color:DarkViolet; } .entrada { background-color:rgb(99,233,166); font-family:"Century Gothic"; font-weight:600; font-size:11pt; color:ForestGreen; } .login { background-color:DarkViolet; font-family:Verdana; font-weight:bold; font-size:11pt; color:Pink; } </style> </head> <body> <h1>Formulario de inicio de sesin</h1> <?php if ($_GET["errorusuario"]=="si"){ ?> <span style="font-family:'Arial Black';font-weight:bold;font-size:14pt;color:red;"> Datos incorrectos </span> <?php } else{

Aplicaciones Prcticas de Software II

Gua #11: Autenticacin de usuarios y sesiones

?> <span style="font-family:'Arial Black';font-weight:bold;font-size:12pt;color:blue;"> Introduce tu nombre de usuario y contrasea </span> <?php } ?> <form action="autenticacion.php" method="POST"> <table border="0"> <tr> <td> <label for="usuario"> Nombre de usuario: </label> </td> <td> <input name="usuario" id="usuario" size="25" value="" class="entrada" /> </td> </tr> <tr> <td> <label for="contrasena"> Contrasea: </label> </td> <td> <input name="contrasena" id="constrasena" size="25" type="password" class="entrada" /> </td> </tr> <tr> <td colspan="2" style="text-align:center;"> <input type="submit" value="Inicio de sesin" class="login" /> </td> </tr> </table> </form> Debes estar registrado en el sistema para poder ingresar. Si no est&aacute;s registrado consulta al administrador, c&oacute;mo obtener tu usuario y contrase&ntilde;a. </body> </html>

Archivo 2: autenticacion.php
<?php session_start(); //Conectando a base de datos $con = mysql_connect("localhost", "aps2", "tecnologico") or die("<h3>No se ha podido establecer conexin con el servidor.</h3>"); mysql_select_db("users") or die("<h3>La base de datos no se ha encontrado</h3>"); $qr = "SELECT usuario, contrasena, nombre, apellido "; $qr .= "FROM usuario WHERE usuario = '" . $_POST['usuario']; $qr .= "' AND contrasena = '" . $_POST['contrasena'] . "'"; //echo $qr . "<br>\n"; $rs = mysql_query($qr); $row = mysql_fetch_object($rs); $nr = mysql_num_rows($rs); if($nr == 1){ //usuario y contrasea vlidos //se define una sesion y se guarda el dato session_start(); $_SESSION["autenticado"] = "si"; $_SESSION["usuario"] = $_POST['usuario'];

Aplicaciones Prcticas de Software II

10

Gua #11: Autenticacin de usuarios y sesiones

$_SESSION["nombreusr"] = $row->nombre . " " . $row->apellido; header ("Location: aplicacion.php"); } else if($nr <= 0) { //si no existe se va a login.php header("Location: login.php?errorusuario=si"); } ?>

Archivo 3: aplicacion.php
<?php require_once('seguridad.php'); ?> <html> <head> <title>Aplicacin segura</title> </head> <body> <h1><?php echo "Bienvenido " . $_SESSION['nombreusr']; ?></h1> <p align="justify"> 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. </p> <a href="salir.php">Salir del sistema</a> </body> </html>

Archivo 4: seguridad.php
<?php //Inicio la sesin session_start(); //COMPRUEBA QUE EL USUARIO ESTA AUTENTICADO if ($_SESSION["autenticado"] == "si") { } else{ //si el usuario no est autenticado //redirigirlo a la pgina de inicio de sesin header("Location: login.php"); //salimos de este script exit(); } ?>

Archivo 5: salir.php
<?php session_start(); session_destroy(); ?> <html> <head> <title>Contenido no seguro</title> </head> <body>

Aplicaciones Prcticas de Software II

11

Gua #11: Autenticacin de usuarios y sesiones

Ahora ests fuera de la aplicacin segura. <br> <br> <a href="login.php">Autenticar usuario</a> </body> </html>

V. DISCUSION DE RESULTADOS 1. Realice un script que interactuando con bases de datos permita autenticar a un usuario envindolo a una pgina de error en el inicio de sesin si el usuario no es autenticado correctamente o a una pgina de bienvenida, donde se debe mostrar tambin algn tipo de informacin si se autentica correctamente. Utilice redireccin para poder enviar al usuario a una pgina de error si la autenticacin no es correcta (regrselo a la ventana de login si el usuario o contrasea no son correctos) o redirjalo a la pgina de bienvenida del sitio si la autenticacin es correcta. Implemente un formulario para crear usuarios y contraseas en la base de datos. Las contraseas deben ser encriptadas (escoja usted qu mtodo desea usar encryt, md5 u otro). Considere este hecho al hacer la validacin de un usuario que desea ingresar al sitio web. La pgina de bienvenida al sitio debe mostrar, utilizando variables de sesin, el nombre completo del usuario autenticado.

VII. BIBLIOGRAFIA John Coggeshall. LA BIBLIA DE PHP 5. 1ra. Edicin. Editorial Anaya Multimedia. Madrid, Espaa 2005. Welling, Luke / Thomson, Laura. Desarrollo web con PHP y MySQL. Traduccin de la 3ra Edicin en ingls. Editorial Anaya Multimedia. 2005. Madrid, Espaa. Gutierrez, Abraham / Bravo, Gins. PHP 5 a travs de ejemplos. 1ra Edicin. Editorial Alfaomega. Junio 2005. Mxico. Sitio web: http://es.php.net/manual/es/features.sessions.php. Sitio web oficial de PHP.

Aplicaciones Prcticas de Software II

12

Vous aimerez peut-être aussi