Foros del Web » Programando para Internet » ASP Clásico »

Restringir el acceso a páginas con ASP

Estas en el tema de Restringir el acceso a páginas con ASP en el foro de ASP Clásico en Foros del Web. Restringir el acceso a páginas con ASP A todos nos ha ocurrido que necesitamos que ciertas páginas de nuestro web solo puedan ser accedidas por ...
  #1 (permalink)  
Antiguo 28/04/2005, 22:16
 
Fecha de Ingreso: abril-2005
Mensajes: 4
Antigüedad: 19 años, 1 mes
Puntos: 0
Restringir el acceso a páginas con ASP

Restringir el acceso a páginas con ASP

A todos nos ha ocurrido que necesitamos que ciertas páginas de nuestro web solo puedan ser accedidas por usuarios previamente autorizados; a continuación os muestro un método sencillo, pero eficaz para conseguirlo.

Para guardar la lista de usuarios autorizados con sus correspondientes password crearemos en una base de datos llamada XXXXX (no useis un nombre demasiado obvio) una tabla que denominaremos USUARIOS con los campos USUARIO y PASSWORD.


Vamos paso por paso:

1.-Creamos una página con un formulario para que el usuario se identifique

2.- efectuaremos la comprobación del usuario y password introducidos con una simple consulta a la tabla USUARIOS, en el caso de que la identificación sea correcta crearemos para ese usuario una variable de session con un valor que identifique su validación como usuario.
En el caso de que la validación sea errónea devolvemos al usuario al formulario de login con un mensaje de error

Login.asp

<%if request.form("usuario")="" then%>
<form method="POST" action="login.asp">
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center"><%=request.querystring("msg")%></p>
<div align="center">
<center>
<table border="0" width="50%" bgcolor="#F2F2F2">
<tr>
<td width="100%" colspan="2" bgcolor="#0000FF">
<p align="center"><font color="#FFFFFF">Login</font></td>
</tr>
<tr>
<td width="50%">Usuario:</td>
<td width="50%"><input type="text" name="usuario" size="20"></td>
</tr>
<tr>
<td width="50%">Password: </td>
<td width="50%"> <input type="password" name="password" size="20"></td>
</tr>
<tr>
<td width="100%" colspan="2">
<p align="center"><input type="submit" value="Enviar" name="B1"></td>
</tr>
</table>
</center>
</div>
</form>


<%else
'eliminamos las posibles comillas de la entrada
'para evitar la introducción de sentencias SQL
usuario=replace(request.form("usuario"),"'","")
password=replace(request.form("password"),"'","")

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\dirBD\xxxxx.mdb"))
set rs = CreateObject("ADODB.Recordset")
sqltxt="Select * from usuarios where usuario='"&usuario&"' and password= '"&password&"'"
'response.write sqltxt
rs.Open sqltxt, conn
if not rs.eof then
' nos ha devuelto un registro, ahora miraremos si es valido
' con ello evitamos el ataque típico SQL
if rs("usuario")=usuario and rs("password")=password then
' si el usuario esta en la base de datos y la password coincide
session("autorizacion")=1
response.redirect "default.asp"
end if
else
session("autorizacion")=-1

end if
rs.close
set rs=nothing
conn.close
set conn=nothing
if session("autorizacion")=-1 or session("autorizacion")="" then
' no hemos encontrado el registro
' eso indica que el usuario y/o la password son erroneos
response.redirect "login.asp?msg=Usuario%20o%20password%20incorrecta "
end if

end if%>



Luego, simplemente, en cada una de las páginas que queramos que requieran autorización previa chequearemos esa variable de session y permitiremos el paso si el chequeo es correcto o redirigiremos al usuario a la página de identificación en caso contrario.

<% if session("autorizacion")<>1 then
response.redirect "login.asp"

end if%>


El sistema nos permitiría incluso conceder diferentes niveles de acceso a páginas dependiendo del usuario, simplemente asignando un diferente valor a su variable de session .


Saludos,

Hector Tamayo
  #2 (permalink)  
Antiguo 29/04/2005, 01:12
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 3 meses
Puntos: 772
Hola htamayo

Te has confundido de foro. Estás en el de PHP.

Saludos, :adios.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:49.