Este es un escenario del mundo real. Estoy tratando de proporcionar todos los detalles necesarios.
Summary
Un usuario cambia su IP con cada solicitud utilizando un navegador sin cookies. ¿Cómo puedo asegurar sus solicitudes de inicio de sesión?
Configurar
- API Restful y thin web JS web
- CSRF Token GET Punto final que genera el token csrf que está vinculado a la solicitud de IP
- Inicie sesión POST Punto final utilizando los parámetros correo electrónico , contraseña y csrf_token
- Access-Control-Allow-Origin está configurado, por lo que las respuestas solo se pueden recuperar desde un sitio web que no sea un atacante. Sin embargo, la solicitud previa al vuelo no se emite según las especificaciones.
- Hay una solicitud de cooldown por dirección IP
- El usuario usa un navegador que no tiene cookies y no tiene almacenamiento local
- El usuario cambia su dirección IP en cada solicitud, por ejemplo, utilizando Tor u Onavo
Problema
Como la dirección IP cambia para cada solicitud, el token csrf nunca es válido y el usuario no puede iniciar sesión.
Podríamos dejar de asociar el token csrf con la IP. Sin embargo, entonces permitiríamos a un atacante generar su propio token csrf y enviarlo al usuario (lo que anula todo el propósito). Es decir. el atacante ahora podría calificar el límite de un usuario en segundo plano y evitar que inicien sesión cuando visitan nuestro sitio.
Pregunta
La única referencia encontré Se sugiere utilizar cookies (que no podemos hacer).
¿Qué deberíamos hacer mejor aquí para permitir que el usuario inicie sesión mientras aún evita csrf?