Para comenzar con los antecedentes, esta publicación es lo que Jeff Atwood dice sobre los tokens CSRF. En esta misma página, continúa diciendo:
Un método de prevención aún más fuerte, aunque más complejo, es aprovechar el estado del servidor para generar (y rastrear, con tiempo de espera) una clave aleatoria única para cada FORMULARIO HTML que envíe al cliente. Utilizamos una variante de este método en Stack Overflow con gran éxito.
Pero en esta publicación, Jeff nunca comenta sobre cuándo y cómo deben actualizarse los tokens.
Estaba usando una técnica similar en una aplicación web en la que estaba trabajando. Funciona así:
- Siempre que el usuario
POST
envíe datos a mi servidor, se envía un token csrf. - Este token CSRF se almacena en una cookie criptográficamente fuerte en la sesión del usuario.
- Si el token es válido, se procesa la solicitud del usuario y viceversa.
- Si la solicitud es válida, deseche el token anterior en el lado del servidor y cree un token nuevo. La respuesta del servidor contiene un nuevo token csrf que se utilizará en la próxima solicitud. El token antiguo en todos los formularios de una página se actualiza con el nuevo para que la siguiente solicitud se procese correctamente.
¿Es aconsejable actualizar los tokens después de POST
solicitarlos o la actualización se debe realizar solo cuando el usuario realiza una GET
solicitud y mantener el mismo token hasta que se realice la siguiente solicitud GET?