El mismo token CSRF para la navegación de múltiples pestañas

0

Tengo un pequeño problema con respecto a mi función de token CSRF (cambia el token cada solicitud). Aquí está el escenario de mi problema:

Cuando abrí 2 páginas (con el mismo token CSRF), cuando abro la primera página y envío el formulario allí, el formulario de la segunda página no funciona (porque el valor del token CSRF ha cambiado). Si lo ves desde la experiencia del usuario, dejará un mal sabor, así que necesito cambiarlo.

Mi pregunta es, ¿cómo puedo hacer que mi función de token CSRF funcione en la navegación de múltiples pestañas, sin afectar la seguridad junto con una mejor experiencia de usuario? Porque quiero que tengan una mejor experiencia de usuario sin afectar la seguridad de su navegación.

    
pregunta googol8080 16.09.2016 - 07:47
fuente

2 respuestas

1

Utilice un solo token CSRF por sesión (en lugar de por solicitud o por usuario). Por ejemplo, el token CSRF puede ser el ID de sesión de texto sin formato, o un cifrado o hash seguro (por ejemplo, HMAC ) Versión de la clave de sesión. O puede almacenar el token CSRF como una variable de sesión asociada con la clave de sesión. Estas son todas las opciones comunes.

Si se está preguntando si esto hace que su sitio sea menos seguro, lea este artículo para mayor seguridad.

Si está utilizando el marco ASP.NET, la forma de hacerlo es simplemente configurando Page.ViewStateUserKey a la ID de sesión.

    
respondido por el John Wu 18.09.2016 - 07:59
fuente
0

Necesitamos más detalles. ¿Estás utilizando un marco?

Además, si está creando un token para cada solicitud, ¿por qué dos pestañas tienen la misma? Eso contradice un poco lo que dijiste.

O tal vez lo entendí mal y quiere decir que solo tiene UN token csrf "activo" a la vez. En ese caso, la solución sería fácil, permitir que varios tokens CSRF sean válidos al mismo tiempo (al mantener una lista de los enviados del servidor). De esa manera, dos pestañas diferentes tienen dos fichas diferentes, ambas válidas.

    
respondido por el daniel f. 16.09.2016 - 09:09
fuente

Lea otras preguntas en las etiquetas