Manejo de tokens de sesión cuando la IP de un usuario cambia con extrema frecuencia

2

Mi servicio web es una aplicación de página única basada en API. Una vez que el usuario inicia sesión, se les otorga un token temporal para usar durante el resto de la sesión que se envía junto con cada solicitud de API. Por supuesto, el token está vinculado a la dirección IP que realizó la solicitud de inicio de sesión. Esto significa que incluso si una tercera parte lograba capturar un token a pesar de TLS, probablemente no podrían usarlo y nadie podría utilizarlo después de que la sesión actual terminara.

Pero recientemente me encontré con un usuario cuya dirección IP cambia con una frecuencia extrema (con una frecuencia cada 30 minutos), lo que hace que tengan que volver a iniciar sesión mientras usan el servicio. El cambio de dirección se debe a la red de habitaciones compartidas en el campus que recicla un conjunto muy limitado de direcciones IP que el usuario final, por supuesto, no tiene control.

¿Cómo puedo reconciliar el mantenimiento de la seguridad de mi configuración actual, y al mismo tiempo no causarles problemas a los usuarios en esta situación? Lo mejor que tengo hasta ahora es aflojar el requisito de IP para que coincida solo con el primer octeto de la dirección, pero eso dista mucho de ser lo ideal.

    
pregunta PhonicUK 04.02.2016 - 18:40
fuente

1 respuesta

4

Me inclino a decir que el bit acerca de vincular el token de sesión a la dirección IP de origen es perjudicial y debería eliminarse.

Tal vinculación a menudo se informa como "buena para la seguridad", pero exactamente por qué es buena para la seguridad rara vez se explica. A este respecto, es similar a la recomendación generalizada de cambiar sus contraseñas con regularidad: una Tradición bien arraigada, por razones que nadie recuerda, y con efectos secundarios tóxicos.

La razón principal por la que los tokens de sesión deben estar vinculados a una dirección IP es para evitar que se reutilicen después del robo a través de la capa TLS. Seamos realistas: si un atacante podría atravesar el TLS, un filtro en la dirección IP tampoco lo bloqueará. Tal atacante podría tanto secuestrar la conexión del usuario que él era el único propietario; enmascararse con la dirección IP habitual del usuario no disuadirá a dicho atacante.

La verdadera razón para vincular el token de sesión a la dirección IP es tratar de evitar que un usuario comparta su token con todos sus amigos. Este es un problema comercial, similar a la licencia de software. Normalmente se trata mejor con vigilancia: en lugar de bloquear tokens de sesión que no provienen de la misma dirección IP que antes, simplemente debe registrar ese intento (pero aún así permitirlo) y, de forma asíncrona, investigue las situaciones en las que un número de direcciones IP de origen parece utilizar un token.

    
respondido por el Tom Leek 04.02.2016 - 19:38
fuente

Lea otras preguntas en las etiquetas