¿Cómo prevenir el ataque csrf (sin cookies)?

1

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?

    
pregunta vincent 12.09.2017 - 01:56
fuente

1 respuesta

0

¿Entonces esta es una API REST-ful con la que está trabajando y sus clientes están usando navegadores que no admiten cookies, la autenticación ergo para su API se realiza a través de un encabezado Authorization ? ¿Y creo que el contenido de este encabezado Authorization se rellena según el contenido de la respuesta del punto final de la API de inicio de sesión?

Si este es el caso, su API ya está protegida contra CSRF. CSRF contra el punto final de inicio de sesión solo funcionará si la respuesta del servidor establece una cookie en el navegador de la víctima que luego se usó para autenticar las solicitudes posteriores.

    
respondido por el MoarCodePlz 12.09.2017 - 05:43
fuente

Lea otras preguntas en las etiquetas