Funcionamiento del sistema de autentificación en ASP

  • Por
Veamos en líneas generales el modo de funcionamiento del sistema de acceso restringido en ASP: las páginas que lo forman y sus responsabilidades.
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 ASP que, en caso de no tenerlo, se puede aprender en nuestro Manual de Programación en ASP.

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.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Jorge

12/4/2005
La aplicacionde seguridad NO SIRVE ya que al darle salir de aplicacion y regresar a la pantalla de logueo si le doy al boton back puedo entrar otra vez a al aplicacion restringida.

marco

23/5/2005
Me parece que el diseño logico esta en lo correcto pero no se aplico en el ejemplo pueso que si se puede pasar al area restringida fasilmente

Daniel

12/7/2005
Efectivamente, si abrimos una sesion de explorer nueva y tecleamos en la barra de direcciones:
http://www.guiartemultimedia.com/desarrolloweb/autentificacion-asp/aplicacion.asp

se accede directamente a la zona restringida sin haber introducido el nombre de usuario ni la contraseña.

Esto se arregla manejando el evento Session_Start de Global.asa.

Leonardo

01/9/2005
Segun la logica debe funcionar me falta comprobar, si alguien tiene una mejor idea que lo publique ok gracias

miguel angel

21/9/2006
Weno y me podriais decir como se podria arreglar el error de seguridad.
Gracias

interneto

05/12/2006
Hola Miguel Angel, vamos a ver si te puedo echar una mano. Se puede entrar en la aplicacion segura por dos motivos fundamentales. Si has copiado el código al pie de la letra de la pagina web, te habrás dado cuenta que en la pagina aplicacion.asp no esta haciendo referencia a la variable session, mas bien es que no aparece en el codigo, para evitar el problema tendras que conseguir el archivo global.asa y trabajar con variables de sesion

Luis

17/1/2007
La autentificación esta mal hecha ya que al copiar la url supuestamente restringida, y volver a escribirla en el navegador accede de igual forma.

atte.

Luis

Julio Miranda Salazar

06/12/2007
La aplicación de seguridad mostrada si sirve, lo que pasa es que falta destruir la sesion que se creo al momento de loguearse, es decir un session_destroy(), en php yo destruyo las sesiones con session_destroy() cada vez que el usuario sale del sistema, con eso al dar back no podras regresar siempre a la pagina de la aplicacion siempre y cuando esta pagina verifique si se creo una sesion para el Usuario logueado correctamente.

OSCAR

04/8/2009
Inyeccion...
Saludos... Necesito saber si con este codigo se pueden evitar inyecciones con sql