seguridad entre paginas asp

01/04/2004 - 17:13 por leon | Informe spam
saludos listeros.

a quien pueda darme sugerencias os agradezco.

en el momento me encuntro haciando una aplicacion asp.
tengo una pagina de login, la cual pide user y password y
luego de alli pasa a frame que tiene un menu y desde el cual
puede escoger opciones.

Lo que quiero es implementar seguridad entre paginas quiero
decir que cuando me digiten en la barra del explorer la direccion
de una pagina en particular no se pueda visualizar a menos que haya
entrado desde la pagina del login, se que se puede hacer con
variales de session pero hay una forma mas poderosa y mas segura?????

os agradezco listerospor su ayuda.
leon

Preguntas similare

Leer las respuestas

#6 JLF
02/04/2004 - 09:44 | Informe spam
Como dice Matias Iacono y como creo que no he especificado en el anterior
post, este es un método adicional al de las variables session.
Particularmente la mejor forma para implementar una seguridad de usuarios y
de páginas "privadas" es con las ya mencionadas session pues el método que
indico únicamente garantiza que la página es llamada desde otra asp del
sitio. Y comento esto porque es muy sencillo logearse en una web y abrir en
la misma ventana del explorador una página creada por el usuario que pueda
contener comandos no deseados.

Un saludo.

"leon" escribió en el mensaje
news:#
Hola, pues nunca he utilizado esas variables que me hablas,
depronto seria lo mismo que las vriables de sesion?

No se, yo diria que seria bueno utilizar una seguridad a bajo
nivel, aunque no se de que forma, ya que nunca lo he hecho,
solo se me ocurrió.


saludos listeros.


"JLF" wrote in message
news:
> Existe otra manera para garantizar que las páginas son llamadas


únicamente
> por ASPs del mismo sitio. Mediante el uso de las SERVERVARIABLES se


puede
> comprobar al principio de cada una que la página anterior pertenece al
> dominio del sitio, no obstante este sistema únicamente se debe emplear


en
> páginas "secundarias" pues si se implementa en la Default.asp principal
(por
> ejemplo) será imposible acceder al sitio. No se si me he explicado.
>
> Espero que te sirva. Un saludo.
>
>
> "Matias Iacono" escribió en el mensaje
> news:O$c070$
> > Aunque pueden existir otras formas... creo que la mas convencional y
> segura
> > es el uso de variables session...
> >
> > De cualquier forma, necesitas un medio para indentificar el navegador
del
> > cliente, si fuera ASP.Net podrias usar la base de datos, pero en este
> caso,
> > si o si necesitas alguna referencia... no te digo un Cookie porque es
> menos
> > seguro, lo unico que te queda, para identificar el navegador es una
> variable
> > de session...
> >
> >
> >
> > "leon" wrote in message
> > news:erVcCw$
> > > saludos listeros.
> > >
> > > a quien pueda darme sugerencias os agradezco.
> > >
> > > en el momento me encuntro haciando una aplicacion asp.
> > > tengo una pagina de login, la cual pide user y password y
> > > luego de alli pasa a frame que tiene un menu y desde el cual
> > > puede escoger opciones.
> > >
> > > Lo que quiero es implementar seguridad entre paginas quiero
> > > decir que cuando me digiten en la barra del explorer la direccion
> > > de una pagina en particular no se pueda visualizar a menos que haya
> > > entrado desde la pagina del login, se que se puede hacer con
> > > variales de session pero hay una forma mas poderosa y mas


segura?????
> > >
> > > os agradezco listerospor su ayuda.
> > > leon
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#7 Jhonny Vargas P.
02/04/2004 - 15:11 | Informe spam
Hola,

Primero que nada no me gustan utilizar variables session.. por eso mismo te
doy otra alternativa un poco más trabajada... aquí van unos puntos.

1.- Debes crear una tabla que permita identificar a los usuarios y que rol
(administrador, usuario, consultor, etc...) tendrá dentro del sitio.

Ejemplo:
Tabla: Usuarios (Codigo, Clave, Nombre, Rol, Correo, etc)

2.- Crear una página para ingresar al sitio, la típica para pedir Usuario y
Clave.

3.- En está página validar que el usuario exista y que su contraseña sea la
correcta, si está correcta, encriptar el código del usuario y enviarlo a lá
página que necesites.

Ejemplo:
Response.Redirect "AdministracionUsuarios.asp?Codigo=%#$"%""

4.- En estas páginas seguras, debes rescatar el Request de esa variable,
desencriptar y verificar que exista el usuario dentro de tu base de datos.
Es decir esto lo deberías hacer SIEMPRE y en todas las páginas seguras.

5.- Luego tienes dos opciones para mantener este valor en las páginas, la
primera es colocando en el action del formulario el valor del Codigo de
Usuario (encriptado), es decir; <form name=".."
Action="pagina.asp?codigo=<%=CodigoEncriptado%>"> o crear un campo oculto
con dicho valor, ejemplo: <input type="text" name="Codigo"
value="<%=CodigoEncriptado%>">


Esa es la idea, la otra es crear Sesiones de Base de datos (en forma manual)
y comenzar a verificar sesiones... es un poco más compleja pero mucho más
segura...


Saludos,
Jhonny Vargas P. [MS-MVP]
Santiago de Chile
http://www.mvp.cl


Todos saben que leon [] escribió el siguiente
mensaje :erVcCw$
saludos listeros.

a quien pueda darme sugerencias os agradezco.

en el momento me encuntro haciando una aplicacion asp.
tengo una pagina de login, la cual pide user y password y
luego de alli pasa a frame que tiene un menu y desde el cual
puede escoger opciones.

Lo que quiero es implementar seguridad entre paginas quiero
decir que cuando me digiten en la barra del explorer la direccion
de una pagina en particular no se pueda visualizar a menos que haya
entrado desde la pagina del login, se que se puede hacer con
variales de session pero hay una forma mas poderosa y mas segura?????

os agradezco listerospor su ayuda.
leon
Respuesta Responder a este mensaje
#8 leon
03/04/2004 - 02:16 | Informe spam
Por lo pronto voy a aplicar tu ejemplo, y vale decir que el ejemplo de Johny
Vargas es tambien muy bueno.

Les agradezco la ayuda, fue importantisima.


leon.



"Benjamin Porter" wrote in message
news:
Hola Leon.

Lo optimo para estos efectos es que una vez validado el nombre de usuario


y
contraseña positivamente, asignes una variable de sesion de la siguiente
forma:

session("acceso")=True

Luego, en la primera linea de cada página de tu sitio para el cual se
requiera previa autentificación, poner

<%
if session("acceso")<>True then response.redirect("login.asp"):


response.End
%>

De esta forma mandas al usuario a identificarse primero si no lo ha hecho.

Me permito descartar (con todo respeto, JLF) la solución de


ServerVariables
por cuanto lo expuesto apunta a impedir los famosos "hotlinks" (linking
desde fuera de la pagina), pero no tiene que ver con la seguridad de
usuarios logeados o no.

Esta solución debería funcionarte para la mayoría de los casos. En


general,
la desventaja de las variables de sesion es que no son compartidas entre
arreglos de servidores, por lo cual si deseas escalar tu aplicación a
ciertos niveles, la variable de sesion no será lo mejor... pero vamos, en


lo
personal llevo varios años desarrollando y una sola vez las variables de
sesion me han quedado cortas, asi que habría de bastarte por un buen


tiempo.

Cuentanos como te va.


Atentamente
_____________________
Benjamin Porter

(Evidentemente sin el ".punto")





"leon" escribió en el mensaje
news:erVcCw$
> saludos listeros.
>
> a quien pueda darme sugerencias os agradezco.
>
> en el momento me encuntro haciando una aplicacion asp.
> tengo una pagina de login, la cual pide user y password y
> luego de alli pasa a frame que tiene un menu y desde el cual
> puede escoger opciones.
>
> Lo que quiero es implementar seguridad entre paginas quiero
> decir que cuando me digiten en la barra del explorer la direccion
> de una pagina en particular no se pueda visualizar a menos que haya
> entrado desde la pagina del login, se que se puede hacer con
> variales de session pero hay una forma mas poderosa y mas segura?????
>
> os agradezco listerospor su ayuda.
> leon
>
>


Respuesta Responder a este mensaje
#9 leon
03/04/2004 - 02:38 | Informe spam
Por lo pronto voy a aplicar tu ejemplo, y vale decir que el ejemplo de Johny
Vargas es tambien muy bueno.

Les agradezco la ayuda, fue importantisima.


leon.



"Benjamin Porter" wrote in message
news:
Hola Leon.

Lo optimo para estos efectos es que una vez validado el nombre de usuario


y
contraseña positivamente, asignes una variable de sesion de la siguiente
forma:

session("acceso")=True

Luego, en la primera linea de cada página de tu sitio para el cual se
requiera previa autentificación, poner

<%
if session("acceso")<>True then response.redirect("login.asp"):


response.End
%>

De esta forma mandas al usuario a identificarse primero si no lo ha hecho.

Me permito descartar (con todo respeto, JLF) la solución de


ServerVariables
por cuanto lo expuesto apunta a impedir los famosos "hotlinks" (linking
desde fuera de la pagina), pero no tiene que ver con la seguridad de
usuarios logeados o no.

Esta solución debería funcionarte para la mayoría de los casos. En


general,
la desventaja de las variables de sesion es que no son compartidas entre
arreglos de servidores, por lo cual si deseas escalar tu aplicación a
ciertos niveles, la variable de sesion no será lo mejor... pero vamos, en


lo
personal llevo varios años desarrollando y una sola vez las variables de
sesion me han quedado cortas, asi que habría de bastarte por un buen


tiempo.

Cuentanos como te va.


Atentamente
_____________________
Benjamin Porter

(Evidentemente sin el ".punto")





"leon" escribió en el mensaje
news:erVcCw$
> saludos listeros.
>
> a quien pueda darme sugerencias os agradezco.
>
> en el momento me encuntro haciando una aplicacion asp.
> tengo una pagina de login, la cual pide user y password y
> luego de alli pasa a frame que tiene un menu y desde el cual
> puede escoger opciones.
>
> Lo que quiero es implementar seguridad entre paginas quiero
> decir que cuando me digiten en la barra del explorer la direccion
> de una pagina en particular no se pueda visualizar a menos que haya
> entrado desde la pagina del login, se que se puede hacer con
> variales de session pero hay una forma mas poderosa y mas segura?????
>
> os agradezco listerospor su ayuda.
> leon
>
>


Respuesta Responder a este mensaje
#10 Dani Castillo
05/04/2004 - 08:32 | Informe spam
El uso de servervariables para consultar el referer tambien es util en
seguridad =)

normalmente tu vas a tener una pagina de formulario para pedir user/pass
(llamemosla "login.asp") , otra que comprueba ese user/pass contra una base
de datos (acceso.asp) y el resto de paginas protegidas como se ha comentado
(if session("acceso")<>true ...)

Si lo tienes asi montado, sin proteger con comprobacion del referer , te
pueden hacer un ataque por diccionario (o un bforce si se ponen a malas)
contra la pagina acceso.asp, no es dificil de programar un diccionario o un
bforce que vaya simulando un envio de un formulario a acceso.asp y probando
distintas combinaciones (ejemplo webbrowser de visual basic, montado al
vuelo con un user/pass , autoenviado con javascript:submit() y que compruebe
luego la pagina retornada )

claro que el ataque a traves de internet es lentiiiiiiiisimo, y un bforce
seria para morirse, pero en algunas webs se podria atacar conociendo algun
nombre de usuario ya y algunas posibles claves (ejemplo: un foro q requiera
loguearse, y en el que tu "ves" los nombres de usuarios de los que postean y
pruebe pares donde pass=usuario o pass=inversa de usuario o pass=usuario +
numero de dos cifras... alguna clave se sacara asi)

lo mejor es evitar los ataques de ese tipo forzando a que en tu acceso.asp
el referer sea tu login.asp (tambien podria atacarse el sistema, pero lo
tienes algo mas controlado ) , en sistemas mas criticos conviene tambien
apuntar la ip del que esta accediendo para "trazar" posibles problemas (o
por ejemplo añadiendo en login.asp una rutina que evite mas de 1 intento
cada segundo de la misma ip, lo cual no evita los ataques pero los
enlentece)

"Benjamin Porter" escribió en el mensaje
news:
Hola Leon.

Lo optimo para estos efectos es que una vez validado el nombre de usuario


y
contraseña positivamente, asignes una variable de sesion de la siguiente
forma:

session("acceso")=True

Luego, en la primera linea de cada página de tu sitio para el cual se
requiera previa autentificación, poner

<%
if session("acceso")<>True then response.redirect("login.asp"):


response.End
%>

De esta forma mandas al usuario a identificarse primero si no lo ha hecho.

Me permito descartar (con todo respeto, JLF) la solución de


ServerVariables
por cuanto lo expuesto apunta a impedir los famosos "hotlinks" (linking
desde fuera de la pagina), pero no tiene que ver con la seguridad de
usuarios logeados o no.

Esta solución debería funcionarte para la mayoría de los casos. En


general,
la desventaja de las variables de sesion es que no son compartidas entre
arreglos de servidores, por lo cual si deseas escalar tu aplicación a
ciertos niveles, la variable de sesion no será lo mejor... pero vamos, en


lo
personal llevo varios años desarrollando y una sola vez las variables de
sesion me han quedado cortas, asi que habría de bastarte por un buen


tiempo.

Cuentanos como te va.


Atentamente
_____________________
Benjamin Porter

(Evidentemente sin el ".punto")





"leon" escribió en el mensaje
news:erVcCw$
> saludos listeros.
>
> a quien pueda darme sugerencias os agradezco.
>
> en el momento me encuntro haciando una aplicacion asp.
> tengo una pagina de login, la cual pide user y password y
> luego de alli pasa a frame que tiene un menu y desde el cual
> puede escoger opciones.
>
> Lo que quiero es implementar seguridad entre paginas quiero
> decir que cuando me digiten en la barra del explorer la direccion
> de una pagina en particular no se pueda visualizar a menos que haya
> entrado desde la pagina del login, se que se puede hacer con
> variales de session pero hay una forma mas poderosa y mas segura?????
>
> os agradezco listerospor su ayuda.
> leon
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida