¿Impedir un ataque CSRF usando expresiones regulares, almacenamiento de sesión y token de autenticación?

4

El usuario inicia sesión en mi servicio de API web utilizando su nombre de usuario y contraseña.
El token de autenticación del servicio del API web para el navegador del cliente.

El navegador del cliente guarda el token de autenticación en el almacenamiento de sesión con JavaScript.
La página del cliente usa expresiones regulares para validar las entradas de cada usuario.
El cliente que envía Ajax solicita el token de autenticación adjunto al servicio web API.

El servicio de API web usa expresiones regulares para validar los datos que provienen de cada solicitud de Ajax.

Al utilizar este enfoque, ¿todavía necesito un token anti-falsificación para mantenerlo oculto en la página del cliente?

    
pregunta Frank Myat Thu 19.12.2015 - 04:47
fuente

2 respuestas

2

El almacenamiento de la sesión del navegador no se envía automáticamente cuando se inicia una solicitud de dominio cruzado. Por lo tanto, a medida que agrega el token de autenticación manualmente, esto actúa como una defensa CSRF por derecho propio y no necesita ninguna protección adicional.

Supongo que aquí hay una relación uno a uno entre el sitio web y la API web. De lo contrario, existe la posibilidad de que un consumidor de su API realice solicitudes de varios dominios a otro consumidor. Para combatir esto, debe vincular la sesión del usuario con el identificador del sitio web que realizó la solicitud de autenticación original, y verificar esto para cada solicitud adicional para mitigar el CSRF.

    
respondido por el SilverlightFox 19.12.2015 - 10:40
fuente
5

Sí, todavía necesita una implementación anti-CSRF de algún tipo, ya que todavía no puede verificar el origen de la solicitud.

Para que un ataque CSRF sea un poco más claro, eche un vistazo a este diagrama:

Sepuedeencontrarunaimplementacióndeanti-CSRF,usandoPHP, aquí .

    
respondido por el Jeroen - IT Nerdbox 19.12.2015 - 06:42
fuente

Lea otras preguntas en las etiquetas