tokens basados en sesión de cookie CSRF

12

Generaré un token CSRF y lo incluiré en un campo de formulario oculto. Al recibir la solicitud, compararé el valor del formulario con el valor almacenado en la sesión del usuario o en una cookie.

¿Todavía se considera aceptable desde una perspectiva de seguridad almacenar este token en la cookie en lugar de la sesión?

    
pregunta Jarrod Everett 23.08.2012 - 16:16
fuente

3 respuestas

5

Aunque no puedo pensar en ningún ataque directo en un sistema de este tipo, diría que no es una buena idea poner esas fichas en el lado del cliente. Te abres a las fugas potenciales . Almacenarlos en la sesión hace que sea imposible recuperarlos.

    
respondido por el Polynomial 23.08.2012 - 16:20
fuente
8

El almacenamiento de token en una cookie no es una solución al problema CSRF. La vulnerabilidad CSRF surge del hecho de que el navegador envía automáticamente cookies junto con la solicitud. Como resultado, la aplicación considera que la solicitud proviene de un usuario válido (y autenticado). Lo único que necesita el atacante es la solicitud exacta que debe enviarse. La introducción del token Anti-CSRF aleatorio (solicitud específica o sesión específica) hace que sea imposible (o simplemente muy difícil) preparar una solicitud válida (en general, el atacante no conoce el valor válido para el token anti-csrf) y dicha solicitud será soltado por el servidor.

Si coloca su token en una cookie, se enviará al servidor automáticamente, como una cookie de sesión, para que no obtenga ninguna protección adicional de eso.

EDITAR: Podría malinterpretar su pregunta. Puede estar hablando del llamado patrón de doble envío de cookies donde se envía el mismo valor en el campo oculto y la cookie.

Sí, este enfoque es aceptable cuando almacenar el token CSRF en sesión es problemático, puede leer más sobre esto aquí: Double Submit Cookies .

    
respondido por el pgolen 24.08.2012 - 08:28
fuente
0

El almacenamiento como una cookie solo hace que sea trivial implementar ataques de reproducción.

Si está almacenado en la sesión, entonces, aunque hay una pequeña ventana donde la reproducción del mismo token afectará a un CSRF, la ventana de oportunidad se reduce de forma masiva, especialmente si agrega alguna validación de sesión (seguimiento de los cambios del agente de usuario, pero tenga en cuenta que Chrome se actualizará de forma transparente en la mitad de la sesión (o que usará el nombre de la organización de la dirección IP del cliente)

    
respondido por el symcbean 23.08.2012 - 16:54
fuente

Lea otras preguntas en las etiquetas