Un problema con el mecanismo de detección de robo de cookies del esquema de cookies de inicio de sesión persistente mejorado de Barry Jaspan

2

He leído este artículo enlace

tengo la intención de implementar el mecanismo de detección de robo de cookies que Barry Jaspan ideó en él.

pero me pareció un problema.

Le envié una carta al respecto a Jaspan hace varios días, pero aún no ha respondido.

el problema es:

  • un usuario puede abrir varias pestañas (al menos 2) rápidamente en su navegador.

  • el navegador envía 2 solicitudes con la cookie 'login_tok-dynamic_tok' a la aplicación (nuestro sistema de inicio de sesión). login_tok es el token que no cambiará durante toda la vida útil del inicio de sesión persistente. dynamic_tok es el token que cambia con cada solicitud.

  • la primera solicitud que ejecuta el servidor hace que dynamic_tok cambie en la base de datos.

  • ahora se procesa la segunda solicitud y como el antiguo dynamic_tok no coincide con el de la base de datos, se generará un falso positivo.

pregunta H M 06.11.2013 - 07:46
fuente

1 respuesta

1

Tienes razón, prácticamente el problema es más probable que ocurra cuando utilices una de las múltiples instalaciones de Firefox, lo que permite restaurar y luego actualizar varias pestañas al mismo tiempo.

Basándome solo en el secreto mismo, no veo forma de saber si ha sido robado o no. La única solución que veo es agregar una fecha de caducidad al token (de todos modos debería haber una para purgar tokens no usados muy antiguos), y cuando un usuario muestra un token, manténgalo en la base, pero establezca su fecha de caducidad en un corto retraso (establecer el vencimiento a uno o dos minutos por delante, por ejemplo). Tal vez debería agregarse un indicador "utilizado" adicional para garantizar que la fecha de caducidad se actualice solo una vez (de lo contrario, un atacante que pueda actualizar la fecha de forma indefinida podría preservar la validez del token a lo largo del tiempo).

Luego, la alerta de "robo de token" se puede generar cuando el servidor recibe una serie válida asociada a un token inexistente o caducado.

    
respondido por el WhiteWinterWolf 06.11.2013 - 13:10
fuente

Lea otras preguntas en las etiquetas