¿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é?Protección CSRF: ¿tenemos que generar un token para cada formulario?
Respuesta
En general, es suficiente tener sólo one token per session, un denominado per-token de sesión:
En general, los desarrolladores sólo necesitan generar esta señal 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, se puede usar una ficha por cada formulario/URL (per formar un símbolo de) para mitigar el impacto cuando una fuga de tokens (e. G. XSS) como una el atacante solo podría atacar con éxito esa forma/URL específica.
Pero usando tokens por solicitud, i. mi. fichas que cambian con cada solicitud, en vez corta la usabilidad del sitio web, ya que restringe la navegación en paralelo:
Para mejorar aún más la seguridad de este diseño propuesto, considere la aleatorización 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.
Así que le recomiendo que utilice tokens por sesión o tokens por formulario.
creo que por forma de fichas funcionarían si: ** a) ** Sólo se crea el token cuando el usuario carga la primera forma, cualquier carga el formulario posteriores deben volver a utilizar el primer token de esa forma. ** b) ** Al almacenar el token en la sesión, debe incluir un identificador para la página/formulario específico. P.ej. SESSION ['edit-user-csrf'] y SESSION ['edit-order-csrf'] y de esa manera puede abrir una página diferente en una pestaña diferente y los dos formularios pueden enviarse correctamente ya que la sesión está almacenando ambos tokens (uno para cada forma). La página sabe qué token csrf comprobar y usar porque está en esa página. – zuallauz
Asegúrate de tener inactividad y tiempos de sesión absolutos que requieren una nueva autenticación y nueva generación de token. (Ejemplo: 20 minutos de inactividad o 4 horas absolutas) – LaJmOn
@zuallauz La URL del formulario se puede usar para identificar el formulario. Si eso no es suficiente, puede agregar cualquier otra información de identificación (por ejemplo, valores de entrada ocultos) o, mejor aún, usar un [contenedor de formulario para almacenar los valores de entrada ocultos en] (http://stackoverflow.com/a/9108483/53114) que también [evitará la falsificación de valores de entrada ocultos] (http://stackoverflow.com/a/9209121/53114). – Gumbo
No, sólo tiene que generate a token on a per-session basis.
Es muy poco probable que los tokens se filtren accidentalmente por los usuarios 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.
- 1. token csrf usando
- 2. Pregunta de protección CSRF
- 3. CSRF token generation
- 4. ¿Para qué sirve realmente la protección CSRF?
- 5. token de CSRF para ajax
- 6. Como: Generar dinámicamente CSRF token en WTForms con el frasco
- 7. Problema de token de CSRF con CodeIgniter
- 8. ¿Necesito un token CSRF para jQuery .ajax()?
- 9. token anti-CSRF y Javascript
- 10. ¿Generar un token LTPA?
- 11. Protección CSRF en solicitudes AJAX usando MVC2
- 12. Django CSRF Token sin formularios
- 13. Cómo eximir la protección CSRF en direct_to_template
- 14. ¿Cómo funciona la protección Rails CSRF?
- 15. Formulario sin token CSRF: ¿cuáles son los riesgos
- 16. CSRF Token faltante o incorrecto
- 17. Rails, OAuth y protección CSRF
- 18. Obtener manualmente un token CSRF al probar
- 19. ¿Deshabilitar la protección CSRF a veces justificado?
- 20. ¿Cuáles son algunas técnicas viables para combinar la protección CSRF con API RESTful?
- 21. Jquery y Django CSRF Token
- 22. Rails CSRF token authenticity y Devise
- 23. ¿Es seguro exponer el token de protección CSRF de una sesión?
- 24. Obtener el token CSRF en la prueba
- 25. Formulario de prueba funcional con CSRF habilitado en Symfony
- 26. Django: CSRF token de falta o incorrecta
- 27. ¿Cómo incluyo el token CSRF de Django 1.2 en un formulario HTML generado por Javascript?
- 28. Django - CSRF token falta o es incorrecto
- 29. ¿Es así como funciona la protección CSRF de Django?
- 30. Rieles: cómo agregar protección CSRF a formularios creados en javascript?
Esto parece ser una pregunta para https://security.stackexchange.com/ –