El principal riesgo de una sesión persistente es una mayor exposición a las vulnerabilidades existentes en el lado del cliente (por ejemplo, XSS, CSRF, reparación de sesión, etc.).
Es decir, cualquier sitio malicioso dirigido a sus usuarios a través de exploits para lo anterior tendrá más probabilidades de éxito porque el usuario se ha dejado conectado.
Con recordarme, lo anterior también podría aplicarse. Supongamos que el token recordatorio a largo plazo se intercambia por un token de sesión automáticamente por solicitud.
por ejemplo
en la solicitud que envía el navegador
Cookie: remember-me=32132213312132
y el servidor emite automáticamente un token de sesión para esta solicitud porque el token se valida. También responde con su nuevo token de sesión para que las solicitudes posteriores se utilicen en esta sesión:
Set-Cookie: session=asdkalkjdjsaddsajdsal
Esto muestra que, aunque se usa una cookie separada para el acceso a largo plazo, porque se intercambia automáticamente, también ayudará a explotaciones de dominios cruzados en las sesiones de los usuarios atacantes.
Puedes mitigar esto utilizando tokens de actualización de estilo OAuth2.
Luego, si el atacante intenta un ataque CSRF como
<img src="https://example.com/transfer_money?to_acc=2321321&amount=1000000"/>
noseejecutaríaautomáticamenteporqueeltokendeactualizaciónporsísolonoessuficienteparaautenticarlasolicitud(remember-me
);debeintercambiarseporuntokendeacceso(session
).
porejemploSielusuariovisitasusitio,podríahaberotropasoexplícitoparaobtenereltokensession
pararepresentaraunusuarioactivoyregistrado:
<formmethod="post">
<input type="hidden" name="anti-csrf" value="asddadaddasa242421fsas" />
</form>
El token anti-csrf se adjunta al token de actualización en la base de datos del lado del servidor, lo que evita que se utilice un exploit CSRF para obtener el token antes del ataque. Lo anterior debe ser enviado manualmente por el usuario para evitar que un atacante abra la página en una ventana emergente o dentro de un IFrame.
Solo después de todas las validaciones anteriores, el servidor responde con un token de acceso ( session
):
Set-Cookie: session=asdkalkjdjsaddsajdsal
Por supuesto, su sitio ya debería mitigar contra XSS, CSRF y similares, sin embargo, este es un enfoque de defensa en profundidad para protegerse contra el establecimiento de tokens a largo plazo que tienen una mayor probabilidad de comprometer a un usuario porque su inicio de sesión es más Es probable que estén activos en caso de ser atacados.