API que no permite invalidar la sesión en el lado del servidor. ¿Cómo hacerlo más seguro?

5

Estoy escribiendo una aplicación alrededor de una API REST que no permite que el servidor invalide una sesión, es decir, no hay un punto final como logout que haga que la cookie que está usando mi aplicación no sea válida de ahora en adelante.

Entonces veo que si un hacker intercepta esa cookie, entonces un usuario se desconecta (lo que significa para mí - eliminar la cookie) y luego el hacker puede hacer llamadas a API a pesar de que el usuario piensa que ya no es posible.

¿Puedo hacer otra cosa que no sea simplemente eliminar la cookie?

La cookie tiene un tiempo de espera - 24h. Este tiempo de espera se renueva cada llamada a la API.

    
pregunta Marian Paździoch 17.07.2015 - 15:56
fuente

1 respuesta

3

Esto no es realmente una configuración poco común. Por lo general, cuando una aplicación utiliza cookies sin estado, no hay otra manera, aparte del tiempo de espera, de invalidar la sesión.

La ventaja de este enfoque es que el servidor no necesita mantener una lista de cookies válidas, lo cual es útil para escalar, la desventaja es (como se ha dado cuenta) si la aplicación tiene un tiempo de espera prolongado, existen riesgos. relativas a las sesiones robadas.

Lo que podrías hacer asumiendo que el flujo es

cliente < - > tu aplicación < - > API

es si le da a sus clientes un token creado por su aplicación y luego mantiene una tabla de mapeo para que pueda hacer un proxy del tráfico entre el cliente y la API, entonces podría implementar una función de cierre de sesión para su aplicación que eliminó el token que el custoemr tiene el cierre de sesión.

El token de la API aún sería válido, por supuesto, pero suponiendo que pueda asegurar el enlace entre su aplicación y la API, el riesgo principal estaría en el compromiso de su aplicación, que probablemente tenga consecuencias más serias que los clientes individuales que pierden el control. de sus tokens de sesión.

    
respondido por el Rоry McCune 17.07.2015 - 19:57
fuente

Lea otras preguntas en las etiquetas