¿Cuál es un buen período de tiempo antes de actualizar el token CSRF de la sesión del usuario?

4

Estoy usando un token de formulario para evitar ataques CSRF. Esos tokens se almacenan y se vinculan a la sesión de un usuario. Ahora quiero actualizar el token solo cada N minutos u horas para que el usuario no tenga problemas de uso, como el botón Atrás del navegador que no funciona correctamente.

Mi pregunta es, ¿cuál sería un buen período de tiempo antes de actualizar el token de sesión del usuario?

    
pregunta Kid Diamond 23.04.2014 - 15:38
fuente

2 respuestas

1

Bueno, deberías estudiar tus estadísticas personales. Debería hacerse las siguientes preguntas:

  1. ¿Cuánto tiempo pasa un usuario en su sistema?
  2. ¿Cuál es el impacto de la usabilidad de no cambiarlo en una sesión?
  3. ¿Cuál es su tiempo de sesión expirando? ...

Nadie aquí puede responder esas preguntas (entre otras) mejor que usted.

    
respondido por el kiBytes 23.04.2014 - 16:35
fuente
1

Mi recomendación: Nunca.

Solo debe tener un token CSRF por sesión. Si la sesión se agota, el token CSRF caduca en este punto.

Como no hay forma de que un atacante lea el token CSRF (al menos no hay más riesgo de que un atacante lea un token CSRF como la cookie de ID de sesión), no hay necesidad de generar uno nuevo a menos que tener una nueva sesión para ir con ella.

La única excepción a esto que veo es que si se intenta enviar un formulario con una cookie de sesión de usuario válida, pero con un token CSRF incorrecto (es decir, el usuario está siendo atacado por otro sitio que está usando). En este caso, es posible que desee generar un nuevo token CSRF y marcarse una alerta para que se puedan investigar las solicitudes. Es posible que desee generar la alerta después del primer token de CSRF incorrecto (ya que las solicitudes que contienen un token de CSRF incorrecto no deberían suceder en absoluto), pero podría actualizar el token después de que n fallara los intentos de reducir las posibilidades de un token con fuerza bruta mientras permite que el usuario use su sistema sin que se le niegue el servicio (aunque la denegación de servicio es una preocupación menor en este caso ya que el ataque vendrá desde su propia máquina).

    
respondido por el SilverlightFox 24.04.2014 - 12:03
fuente

Lea otras preguntas en las etiquetas