fuerza de ID de sesión de ASP.NET

1

Después de leer this y this , me pregunto si se considera seguro usar el ID de sesión ASP.NET predeterminado como un medio para autenticar al usuario. Sé que sería mejor implementar ASP.Identity, que tiene una cookie 'fedAuth' mucho más larga junto al mecanismo de sesión de ASP, sin embargo, debido a restricciones, esto es muy difícil. Por supuesto, en caso de que el ID de sesión de la ASP no sea lo suficientemente seguro para utilizarlo como un medio para autenticar al usuario, nada es imposible.

Lo que quiero saber es si se considera una mala práctica hoy en día utilizar el session.ID de ASP.NET como un medio para verificar el usuario, cuando se configuran los indicadores HTTP-only y Secure? Una comparación de seguridad con la autenticación de cookies de ASP.Identity estaría bien, ya que la primera fuente I enumerado parece tener una implementación personalizada, que ciertamente no quiero implementar. Prefiero ver una comparación con algo establecido.

    
pregunta Michael 29.06.2015 - 14:43
fuente

2 respuestas

1

Dado que ambas implementaciones se basan en la seguridad de la cookie para proteger la sesión, eso significa que la comparación se basa principalmente en las cualidades de los valores de las cookies (lo que significa que si robas cualquiera de las cookies en las que estás).

Ambos valores son básicamente un valor cifrado contra una clave almacenada en el lado del servidor. Las sesiones utilizan un valor aleatorio cifrado contra la clave de la máquina, y las identidades de ASP.NET utilizan una colección de valores que describen la identidad de la sesión cifrada contra la clave de la máquina.

Las sesiones se basan en un mapa en memoria (o persistido en la base de datos) del ID de sesión descifrado a la información de la sesión, mientras que las identidades simplemente rehidratan la identidad de la sesión directamente del valor almacenado en la cookie.

Por un lado, Sesiones no es portátil porque se basa en un puntero para volver al valor en la memoria, por lo que si elimina ese puntero, la sesión está muerta. Por otro lado, realmente no se escala bien.

Desde una perspectiva puramente de seguridad, están más o menos a la par entre sí, pero las Sesiones fueron desaprobadas por una gran cantidad de razones no relacionadas con la seguridad.

    
respondido por el Steve 29.06.2015 - 18:04
fuente
0

Agregar la identidad de ASP.NET no debería ser un trabajo tan grande. Guía aquí .

La sesión no ha sido diseñada como un mecanismo de autorización. Tiene algunas características que lo hacen inadecuado, como usar el mismo identificador anterior y posterior a la autenticación, haciéndolo vulnerable a la reparación de la sesión . Además, es difícil verificar el estado de autorización para el acceso a la página, ya que cada página deberá tener implementadas sus propias comprobaciones manuales.

Habiendo dicho eso, algunos mecanismos de autorización en la antigua autenticación de formularios no eran perfectos. Por ejemplo, el método de cierre de sesión no borró el lado del servidor con el estado registrado :

  

Al llamar al método SignOut solo se eliminan los formularios de autenticación   Galleta. El servidor web no almacena autenticación válida y caducada   Entradas para la comparación posterior. Esto hace que su sitio sea vulnerable a una   ataque de repetición si un usuario malintencionado obtiene una autenticación de formularios válida   cookie.

No estoy seguro de si esto ya está solucionado en la nueva Identidad ASP.NET.

    
respondido por el SilverlightFox 30.06.2015 - 10:47
fuente

Lea otras preguntas en las etiquetas