Cómo evitar la actualización de un token de acceso robado

2

El escenario es: tienes un token de actualización que es válido por un período de tiempo más largo y un token de acceso que es válido por un período de tiempo más corto.

La configuración: hay un cliente, un servidor de aplicaciones y un servidor de autenticación.

  • El cliente almacena el token de acceso.
  • El servidor de aplicaciones almacena el token de actualización.
  • El servidor de autenticación reparte el token de actualización + acceso.

Una de las ventajas es que un token de acceso robado solo se puede usar mientras sea válido.

Supongamos que un pirata informático roba el token de acceso que es válido durante 30 minutos. Cuando el pirata informático realiza una solicitud con el token de acceso robado válido pero caducado después de 30 minutos, el servidor de la aplicación lo actualiza con el token de actualización, por lo que el pirata informático obtiene un nuevo token de acceso válido y no caducado.

¿Cómo se puede evitar esto?

    
pregunta Arthur 11.05.2018 - 09:35
fuente

1 respuesta

1

Para obtener un nuevo token de acceso, el cliente debe enviar el token de actualización al servidor. Entonces, si el atacante solo roba el token de acceso, no podrá volver a cargar. Para hacer eso, ella también tiene que robar el token de actualización. Ahora, si el atacante está en posición de robar el token de acceso, es probable que también pueda arrebatar el token de refreash mientras está en ello. Tal vez esto no haga mucha diferencia en el escenario de robo de token, pero todavía quería señalarlo.

Dividirlo en un acceso y un token de renovación no protege contra el robo. Eso no es para lo que está diseñado. El propósito de la división es hacer posible que el servidor revoque tokens sin tener que acceder a la base de datos en cada solicitud individual.

Entonces, ¿cómo proteges contra el robo? De la misma manera que lo haría con cualquier secreto del lado del cliente, ya sea un ID de sesión o lo que no. Establezca una vida útil limitada (del token de refreash, en este caso), use un buen TLS y quizás incluya información de geolocalización en el token para que pueda bloquear las solicitudes que de repente provienen del otro lado del planeta.

    
respondido por el Anders 11.05.2018 - 10:05
fuente

Lea otras preguntas en las etiquetas