Una fijación de sesión es un ataque en el que una persona se obsesiona identificador de sesión de otra persona (SID).
El ataque comienza cuando el atacante visita el sitio web y establece una sesión válida, cuando la aplicación entrega una cookie que contiene la ID de la sesión, el atacante ha corregido o bloqueado una buena sesión conocida. El atacante engañará a la víctima para que use esta ID de sesión. En este punto, el atacante y la víctima comparten la misma ID de sesión. Ahora, cada vez que la información almacenada en esta sesión obsesionada se utiliza para tomar decisiones para la víctima o para mostrar información que solo la víctima debe ver, ¡puede ser potencialmente utilizada y vista por el atacante! Puede read more here.
La única solución para esto sería ASP.NET a emitir una NUEVA ID de sesión después de cualquier autenticación exitosa, de esa manera una vez que la víctima inicia sesión, el atacante no tendrá acceso a la sesión. Otro punto a recordar:. nunca entregan sesión hasta que el usuario inicia sesión en
Recuerde, en ASP.net Session.Abandon()
no es suficiente para esta tarea, que no elimina la cookie de ID de sesión desde el navegador del usuario, por lo que cualquier nueva solicitud a la misma aplicación, después de abandonar la sesión, utilizará la misma ID de sesión y una nueva instancia de estado de sesión. As Microsoft states here. Es necesario abandonar la sesión y clara cookie de sesión ID:
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
También es una buena práctica para cambiar el nombre de la cookie de autenticación de formularios, en su archivo web.config
:
<authentication mode="Forms">
<forms name=".CookieName" loginUrl="LoginPage.aspx" />
</authentication>
Aquí es un buen artículo en Session Attacks and ASP.NET y cómo resolverlo.