2012-04-25 9 views
7

estoy usando una cookie de sesión (no permanente) para guardar el ID de usuario para saber si el usuario está conectado.¿es la cookie de sesión lo suficientemente segura como para almacenar el ID de usuario?

básicamente, el usuario inicia sesión, verificamos las credenciales, luego configuramos una cookie de sesión userID = 37 (para este usuario en particular, otro usuario tendría 73 o 69, etc ...)

Session.Add("UserID", 37); 

mi pregunta es, ¿es posible que el usuario conectado a cambiar de alguna manera esta sesión de cookie de 37 a 73 y así engañar al servidor haciéndole creer que en realidad es el usuario 73? en caso afirmativo, ¿qué estoy haciendo mal, cómo manejar este caso? parece una locura poner en sesión el ID de usuario y el hash de contraseñas y verificarlos CADA VEZ ??

estamos utilizando este valor de ID de usuario también en consultas posteriores para restringirlos.

lo siento si esta no es una pregunta de código EXACTA, pero es muy relevante para mi código.

Respuesta

6

La cookie de sesión solo contiene la identificación de la sesión. Se usa para identificar al usuario. No contiene nada más. La información real para esta sesión se almacena en el servidor. Entonces esto es seguro. El usuario nunca puede cambiar el valor que se ha almacenado en el servidor. El usuario no puede cambiar su identificación si almacenó esto dentro de la sesión.

Dicho esto, cuando se trata de identificadores de usuario puede considerar usar forms authentication para rastrear usuarios autenticados en lugar de reinventar ruedas con la sesión.

+0

oh. Ya veo. tienes mucha razon. Me había olvidado por completo de esto. mucho para la respuesta rápida. Tengo que esperar 12 minutos para aceptar, pero lo haré. – b0x0rz

+0

Si el valor está almacenado en el servidor, ¿la sesión realmente se elimina cuando el cliente cierra el navegador o solo es la clave? (No sé si usé los nombres correctos) – BjarkeCK

+0

@BjarkeCK, la clave vive en el cliente.En una galleta Las cookies de sesión no son persistentes por lo que cuando el usuario cierra el navegador, la cookie se perderá. El valor, por otro lado, continuará vivo en el servidor hasta que sea basura recolectada. –

2

Esa no es la cookie, y es perfectamente segura ya que no puede ser cambiada por el usuario. Lo único almacenado en el servidor en una cookie es la ID de la sesión.

3

estado de sesión ASP.NET proporciona una importante ventaja de seguridad respecto a las técnicas de gestión del estado de cliente en el que el estado actual se almacena en el servidor y no se expone en el cliente y otras entidades de la red a lo largo de la ruta de solicitud HTTP. Sin embargo, hay varios aspectos importantes de la operación del estado de la sesión que deben considerarse para mantener la seguridad de la aplicación. Las mejores prácticas de seguridad se dividen en tres categorías principales: prevención de spoofing e inyección de ID de sesión, asegurar el almacenamiento de estado en el back-end y garantizar la seguridad de la implementación del estado de la sesión en entornos dedicados o compartidos.

Leer: Securing Session State

+0

sí, todo lo que está cubierto :) con suerte;) – b0x0rz

0

Como han señalado las otras respuestas, el valor real (37 en el ejemplo) se almacena en el servidor, no en el cliente, pero eso no quiere decir que usted es inmune a ataques potenciales Este mecanismo aún es vulnerable a los ataques de secuencias de comandos entre sitios. Básicamente, lo que está almacenado en la cookie del cliente es un gran identificador largo. Si alguien que no sea el usuario real se apodera de ese identificador, puede ponerlo en una cookie propia y esencialmente pretender ser ese usuario. Puedes buscar secuencias de comandos cruzadas más por tu cuenta (no soy un experto en el tema) para ver algunas de las formas comunes en que un usuario malintencionado intentará mirar las cookies de otros usuarios y tratar de establecerlo como propio , junto con formas de defenderse de tales ataques (algunos de los cuales estoy seguro de que los navegadores y ASP lo harán por usted).

Cuestiones relacionadas