Comprobar seguridad con ASP

Hola, tengo el siguiente problema: Imaginaros que al entrar en un sitio web (supongamos página A), lo hacemos pidiendo al usuario un nombre y...

La FAQ Comprobar seguridad con ASP tiene

Pertenece a la categoría:

Pregunta
Hola, tengo el siguiente problema:

Imaginaros que al entrar en un sitio web (supongamos página A), lo hacemos pidiendo al usuario un nombre y una password. Si es correcto nos permite entrar en la página B. Pero qué pasa si alguien ve en la barra de direcciones la dirección de la página B y la teclea directamente? Cómo se evitaría que pueda acceder directamente a esta página.

La solución sería comprobar en la página B que ha sido enlazada desde la página A (me imagino que comprobando esta información en el header de la página B)???

Me gustaría saber cuál es el mejor método tanto en asp como en php.



Gracias.


Respuesta de Marco Antonio Camarena Cortés
La mejor forma de realizar estas comprobaciones, es con algún sistema que use sesiones o cookies, (no sé cómo trabaje en ASP, pero seguro puedes usar cookies).



Una vez guardada la información de usuario y contraseña en una cookie o sesión, si alguien teclea la dirección de la página B verificar la información de acceso que esté guardada (según el método) y en caso de no ser usuario verificado, mostrarle un texto de acceso denegado, por decir.



Códigos no te muestro porque ya sea que tengas un sistema trabajando o que no lo vayas a usar, y tienden a ser algo largos (y algunas empresas dicen que caros).



Saludos

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios
Fueron enviados 4 comentarios a la faq
4 comentarios revisados:
Por: Reinaldo
18/3/08
Para ASP:

En la pagina A creas una variable de session (yo la llamo "Admin")la cual le das un valor verdadero en caso de haberse autentificado correctamente

Session("Admin") = true

En la pagina B (o cualquier pagina subsiguiente) Incluyes el siguiente codigo al principio:

<%
' verificar si se autentifico en el sistema
If Not Session("Admin") Then
CadenaError = "'Por favor autentifiquese '"
Response.Write ("<script language=""Javascript"">" & vbCrlf)
Response.Write (vbTab & "window.alert(" & CadenaError & ");" & vbCrlf)
Response.Write (vbTab & "window.history.back();" & vbCrlf)
Response.Write ("</script>")
End If
%>


Con esta rutina autentificas por sesion de trabajo, si alguien trata de entrar directamente a cualquier pagina que tenga esta rutina y no ha pasado previamente por la pagina A para iniciar la variable de sesion en su valor verdadero sera reenviado a la pagina anterior.
Por: Guillermo
18/3/08
Efectivamente podes hacerla usando variables de session o cookies. El problema con las cookies es que a veces o la mayoria de las veces son bloqueadas.

Los pasos son bien secillos:

1. Pedis el username y el password
2. En la siguiente pagina comprobas si ese username y ese password existen en una tabla de tu base de datos.
3. Si existen entonces creas algo como esto:

session("autenticado") = true

de lo contrario (si no existen)

session("autenticado") = false

e inmediatamente lo redirigis con response.redirect a la página donde pedis la contraseña. (si eres un poquito mas experto mandas un par de querystrings para identificar el error y dar un mensaje)

y a todas las demas páginas pones algo como esto

if session("autenticado") = false then

response.redirect "login.asp" (o como se llame tu pagina.)

else

'MOSTRAS EL CONTENIDO.

end if
Por: Juan Antonio
18/3/08
Llevo más de 5 años programando en ASP y mi recomendación es que uses sesiones, son mucho más fáciles de programar en ASP que las Cookies.

En el fichero que compruebas el login a la zona donde quieres que sea restringido, hace un Session("Logado") = True (en el global.asa deberías poner algo como Session("Logado") = False en el método Application_OnStart).

En las páginas donde quieres ver si está o no el usuario logado solo tendrás que hacer
If Not(Session("Logado")) Then
Response.Redirect("URL_B")
End If

Esto te recomiendo que lo insertes en un fichero de inclusión, puesto que si quieres cambiar la URL_B te será mucho más fácil cambiarla en un fichero que en 5 ó 20.

Bueno espero haberte sido de ayuda
Por: Santiago A
19/3/08
Primero te tengo que decir que no conozco nada de ASP, pero si tengo experiencia con ASP.NET.

Y si bien lo de la session esta correcto, me parece bastante al gas tener que preguntar en todas las paginas si estas logueado o no.

La solucion que yo utilizo es Membership.

Muchachos... no es necesario reinverntar la rueda

Volver al árbol de categoríasVolver al árbol de categorías
Alojados en el grupo