Funcionamiento del sistema de autentificación en PHP

Valoración del artículo:
Descripción de las distintas páginas que forman el sistema de autentificación y su funcionamiento, basado en usuario y contraseña.
Publicado: 19/12/02
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Un sistema de autentificación es un módulo de seguridad para asegurarnos de que el usuario que visita las páginas es quien dice ser. Por supuesto, sabiendo que ese usuario es conocido, podremos darle acceso a más aspectos de la página que si fuese un usuario desconocido. Pero supongo que, si estás leyendo este artículo, ya conocerás lo que es un sistema de autentificación y lo que deseas hacer es crear uno para tus páginas.

Referencia: Este manual requiere el conocimiento básico de PHP que, en caso de no tenerlo, se puede aprender en nuestro Manual de Programación en PHP.

Esquema de un sistema de autentificación

Vamos a empezar por definir un diagrama para realizar la autentificación de usuario en unas páginas web, que nos servirá para programar luego las páginas ajustándose al diagrama.

diagrama de funcionamiento de un sistema de autentificacion

En la imagen anterior podemos ver el diagrama, que empieza por la página donde se pide un usuario y contraseña para acceder a la aplicación de acceso restringido.

Los datos de autentificación (usuario y contraseña escritos en la página inicial) se envían a la página dibujada con línea de puntos, que se encarga de hacer una comprobación de dichos datos del usuario. Según los datos de autentificación, se redirecciona al navegador a la página de la aplicación restringida, en caso de que sean correctos, o a la página donde volver a escribir el usuario/contraseña, en caso de que sean incorrectos. Esta página la he dibujado con línea de puntos porque no es una página donde se pare el navegador para nada, sino que sólo es una página de paso que redirecciona a un sitio u otro dependiendo de los datos que reciba.

La aplicación de acceso restringido, aparte de mostrar las funcionalidades que queríamos proteger con usuario contraseña, debe de realizar unas comprobaciones de seguridad para saber si se ha pasado con éxito el proceso de autentificación o si se está intentando acceder de manera no permitida a esa página. Esta comprobación la he dibujado como una capa con color verde más oscuro sobre la página de la aplicación. Si no se satisface dicha comprobación (el usuario no se ha autentificado correctamente) se vuelve a la página donde escribir el usuario y la contraseña.

Este es el esquema básico, que espero que se entienda bien. Ahora, veamos algunas preguntas que podría hacerse el lector.

¿Por qué hacemos esta comprobación de seguridad dentro de la aplicación?
Podría ser que alguien conociese la URL de la aplicación de acceso restringido y la escribiese directamente sobre la barra de direcciones del explorador, así que hacemos esta comprobación para saber que realmente no se está accediendo sin pasar por la página que comprueba si el usuario/contraseña es correcto

¿Cómo sabemos que ciertamente se ha pasado por la página que comprueba los datos de autentificación?
Esta comprobación la podríamos hacer de varias maneras, así pues, depende de nuestro script de autentificación y el nivel de seguridad que tratemos de implementar. Un ejemplo simple podría ser crear una variable de sesión en la página que comprueba los datos, si es que eran correctos, y en capa se seguridad de las páginas de acceso restringido comprobaríamos si esa sesión está o no definida.

En caso de desear burlar la seguridad, ¿Cómo podría un usuario entrar a la página de la aplicación si no hay enlaces directos y para pasar a ella necesitamos que nos redireccione la página de comprobación del usuario/contraseña?
Pues de diversas maneras, para empezar, el historial de los ordenadores guarda las URL a las que se ha accedido y cualquier persona podría recuperar la URL de nuestra aplicación con acceso restringido. También se podría probar distintas URL que podríamos imaginarnos como posibles para la aplicación y esperar a acertar con el nombre de archivo en algún momento, incluso esta tarea se la podríamos encomendar a un programa para realizar muchas más pruebas. En cualquier caso, nuestra seguridad no se puede quedar en simplemente que los posibles intrusos no conozcan la dirección de la página.

Comentarios
Fueron enviados 19 comentarios al artículo
13 comentarios no revisados
6 comentarios revisados:
Por: borja
08/9/03
Adicionalmente siempre es conveniente que las zonas seguras se accedan a través de un servidor de conexion seguro.

Los detalles son complejos pero lo normal es que el servidor te redireccione a una versión segura (con el https) para que ningún ordenador entre medias pueda escuchar la contraseña con algún programa que mire las conexiones.

Tu comàñero de oficina o cibercafé puede tener un sistema instalado que grabe todos los datos de la red local. Si la contraseña se manda sin encriptar sólo tiene que gardarla ... y ya está.
Por: macias
18/9/03
Existe ya una pequeña aplicación basada en php con la que la puedes implementar en tu web rapidamente para el uso de zonas restringidas. Esta es la página para poder bajarlo: http://www.hotscripts.com/Detailed/15291.html

Este desarrollo es español por lo que saber manejarlo os va a resultar facil. Yo lo he utilizado en una página mia y funciona perfectamente.
Por: Alexander Cervantes
26/11/03
he probado este método de autentifiación de este interesante artículo, y, tengo el siguiente sin sabor, cuando uno ingresa con los datos correctos, la APLICACION SEGURA, no es tan segura puesto que si luego abrimos otras páginas o retrocedemos, y luego queremos regresar a la página regresa sin ningún control de autentificación; hay formas con javascript de evitar esto, pero hay alguna otra forma en php?
Por: José Ramón Damas
29/12/04
Este post es para responder el post de Alex Cervantes.
Quizás ya no te sea necesario, pero ...

Para corregir ese tipo de acceso "no seguro" cuando alguien abre otra pag o retrocede con el botón del navegador, tan sólo debemos destruir la variable de sesión al comienzo de la pag index.php y lo mismo tras incluir la capa de seguridad en la pag aplicacion.php.
Creo que con ésto corregimos ese detalle, desde PHP sin necesidad de Javascript.
Espero que le sea útil a alguien.
Un saludo.
Por: Jose Manuel
26/2/05
Hola,
Soy un programador todavia nobel, que le gustaría saber donde me podría bajar el código de estas paginas que se prueban.

Gracias un saludo

RESPUESTA

Para tener mas ejemplos y entender mejor esto de la programación en PHP puedes descargarte el manual de PHP y los talleres de PHP donde vienen bastantes ejemplos.

manual PHP

enrique...
Ayuda a validar usuario y contraseña
08/4/09
Hola a todos, vengo por aca porque necesito ayuda con eso de la validacion de usuario y contraseña. Po lo que vi como funciona este ejemplo me di cuenta que es exactamente lo que necesito, que me funcione como esta ahi. ¿Sera que por favor me pueden decir como es ese codigo para lograr hacer lo que muestra ese ejemplo? por favor es que soy nuevo en esto de desarrollo web.

Gracias.

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo
Copyright | Publicidad | Acerca de | Datos legales | Contacta