Foros del Web » Programando para Internet » ASPX (.net) »

Duda con FormsAuthenticationTicket

Estas en el tema de Duda con FormsAuthenticationTicket en el foro de ASPX (.net) en Foros del Web. Hola chic@s, estoy haciendo una aplicación basada en roles en la cual hay 3 rangos que permiten acceder a distintas carpetas. Para hacer pruebas en ...
  #1 (permalink)  
Antiguo 22/01/2006, 00:45
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Pregunta Duda con FormsAuthenticationTicket

Hola chic@s, estoy haciendo una aplicación basada en roles en la cual hay 3 rangos que permiten acceder a distintas carpetas.
Para hacer pruebas en el script, cree un ticket, lo encripté y envié la información al navegador del cliente en una cookie.
Ahora, al ver el contenido de esa cookie me surge la siguiente duda: en una parte se guarda la información del rol al cual pertenece el usuario, por lo que imagino que se utiliza esa información para validar que ese usuario le sea permitido acceder a una "X" carpeta. Pero ¿que pasa si el usuario desencripta la cookie, le cambia "normal_user" por "admin" y la vuelve a encriptar? ¿le sería permitido acceder a las carpetas restringidas a los usuarios "admin"?

Me parece bastante ilógico que esto sea como me imagino, ya que en ese caso habría un gran problema de seguridad, pero al desconocer como funciona este tema, prefiero asegurarme antes que nada.

Se agradece cualquier respuesta.

Saludos.
__________________
R4DS en español | R4DS en inglés

Última edición por zaqpz; 22/01/2006 a las 02:31
  #2 (permalink)  
Antiguo 23/01/2006, 10:43
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Pero ¿que pasa si el usuario desencripta la cookie, le cambia "normal_user" por "admin" y la vuelve a encriptar?
Para empezar el ticket guarda una referencia del contexto del usuario que posteriormente pasa por un encritpamiento (FormsAuthentication.Encrypt(ticket)), por lo que el usuario no la puede descencriptar tan facilmente y si la llega a cambiar necesita el contexto del usuario el cual lo proporciona la app.

Me imagino que tienes algo así en tu code:

Cita:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
Context.User.Identity.Name,
DateTime.Now,
DateTime.Now.AddHours(1),
false,
"tus roles")
string sCookie = FormsAuthentication.Encrypt(ticket);
Response.Cookies["Roles"].Value = sCookie;
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 23/01/2006, 15:29
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Gracias por la respuesta RootK.
No quisiera abusar de su paciencia pero no termino de comprender el tema de "contextos" a pesar de haber leído algún artículo de Microsoft al respecto, y visto muchos ejemplos de Seguridad con Formularios, en los cuales se limitan a dar el ejemplo y no especificar "que sucede" en el medio con los datos.

Creo que mi principal inconveniente es venir de PHP, donde si en la cookie guardas un valor tan crítico como un nivel de acceso, por mas encriptado que esté, es vulnerable a ser cambiado por otro valor, accediendo a páginas que originalmente no teníamos autorizadas. Por eso, para este tipo de cosas en PHP guardabamos una variable de sesión (inmodificable por el usuario) la cual comprobamos cada vez que el cliente envía una petición a una determinada página.

Ahora con ASP.NET yo lo único que veo es que se crea una cookie donde guardamos la jerarquía del usuario, y no veo sesiones ni algo similar donde se guarde esa información que debería ser inaccesible por un usuario.
Según lo que tu me dices , se guarda en el servidor un "contexto del usuario", lo cual imagino que serán un conjunto de datos en los cuales la aplicación se basa antes de dar acceso a determinado .aspx.

Me sería especialmente útil que me informen un poco acerca de "que se trata este contexto que queda en el servidor" y que tipo de información contiene.

Espero que no sea mucho pedir, realmente me interesa el tema de como ASP.NET maneja la seguridad de mis páginas.

Vuelvo a agradecer a Rootk por su respuesta y agradeceré cualquier otra que me puedan proporcionar.

Un Saludo.
__________________
R4DS en español | R4DS en inglés
  #4 (permalink)  
Antiguo 23/01/2006, 16:33
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Por eso, para este tipo de cosas en PHP guardabamos una variable de sesión (inmodificable por el usuario)
De hecho tambien en asp.net hay variables de session aligual que asp, php, jsp...etc..., se manejan de la misma forma la cuestion es que consumen un espacio en la memoria del server..

Cita:
Espero que no sea mucho pedir, realmente me interesa el tema de como ASP.NET maneja la seguridad de mis páginas.
Te recomiendo que te des una vuelta por aqui..

http://msdn.microsoft.com/library/de...SecNetHT04.asp
http://www.xoc.net/works/tips/forms-authentication.asp
http://support.microsoft.com/default...;en-us;Q301240

Con forme lo vayas leyendo podemos irte explicando dudas mas específicas...

Suerte..
  #5 (permalink)  
Antiguo 25/01/2006, 00:24
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Perfecto, no mas dudas por ahora.
Gracias nuevamente RootK.
Saludos!
__________________
R4DS en español | R4DS en inglés
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 20:41.