security - válido - Protección CSRF: ¿tenemos que generar un token para cada forma?
el token csrf no es válido. por favor pruebe a enviar nuevamente el formulario (2)
¿Tenemos que generar un token para cada formulario en un sitio web? Quiero decir, ¿cada vez que genero un token diferente para cada formulario solicitado? Si no, ¿por qué?
En general, basta con tener un token por sesión , un token por sesión llamado:
En general, los desarrolladores solo necesitan generar este token una vez para la sesión actual. Después de la generación inicial de este token, el valor se almacena en la sesión y se utiliza para cada solicitud posterior hasta que caduque la sesión.
Si desea mejorar aún más la seguridad, puede usar un token por cada formulario / URL ( token por formulario ) para mitigar el impacto cuando un token gotea (por ejemplo, XSS ) ya que un atacante solo podría atacar con éxito esa forma específica. / URL.
Pero usando tokens por solicitud , yo. mi. tokens que cambian con cada solicitud, más bien corta la usabilidad del sitio web ya que restringe la navegación paralela:
Para mejorar aún más la seguridad de este diseño propuesto, considere aleatorizar el token CSRF [...] para cada solicitud. La implementación de este enfoque da como resultado la generación de tokens por solicitud en oposición a los tokens por sesión. Tenga en cuenta, sin embargo, que esto puede generar problemas de usabilidad. Por ejemplo, la capacidad del navegador del botón "Atrás" a menudo se ve obstaculizada ya que la página anterior puede contener un token que ya no es válido. La interacción con esta página anterior dará como resultado un evento de seguridad falso positivo CSRF en el servidor.
Por lo tanto, le recomiendo que use tokens por sesión o tokens por formulario.
No, solo necesitas generar un token por sesión .
Es muy poco probable que los usuarios filtren accidentalmente los tokens y generar un token por formulario complica mucho las cosas si un usuario está navegando por el sitio en dos pestañas / ventanas diferentes a la vez.