Patrón de mejores prácticas para la sincronización de fondo del trabajador de servicio con protección CSRF

2

Tengo una solicitud que utiliza un token de una sola vez incrustado en la página para garantizar la protección CSRF: un atacante podría engañar a mis usuarios para que realicen una solicitud ilícita, pero no pueden obtener el token, e incluso si se puede cambiar con cada solicitud y puede caducar.

Hasta ahora, tan seguro.

Quiero implementar la sincronización en segundo plano con un trabajador del servicio, para que un usuario pueda publicar datos sin conexión y luego enviar esa información más tarde cuando obtenga una conexión.

Sin embargo, eso significa que la página no está disponible para obtener el token CSRF, y cualquier token vinculado con la solicitud cuando el usuario la genera, puede que no sea válido en el momento en que se envían los datos.

Esto parece ser un problema general en cualquier sitio web progresivo, ¿cuál es la mejor práctica para manejarlo?

Creo que la sincronización en segundo plano podría solicitar un nuevo token, aplicarlo a los datos para enviarlo y luego enviarlo, y eso sigue siendo un bucle que un atacante CSRF no pudo aprovechar, pero no estoy seguro de eso. ¿Alguien puede confirmar esto de cualquier manera?

En este momento, los tokens CRSF aseguran que la solicitud proviene de una página específica, que tendrá que cambiar para que funcione cualquier proceso en segundo plano. En su lugar, tendrá que haber algún tipo de servicio de token CSRF, por lo que solo podremos asegurarnos de que el usuario haya hecho una solicitud anterior y recientemente de ese servicio. ¿Sigue siendo una protección adecuada contra la CSRF?

    
pregunta Keith 09.08.2016 - 08:59
fuente

1 respuesta

1
  

Creo que la sincronización de fondo podría solicitar un nuevo token, aplicarlo   a los datos para enviar y luego enviarlos, y eso sigue siendo un bucle que un   El atacante CSRF no pudo aprovecharse, pero no estoy seguro de eso.   ¿Alguien puede confirmar esto de cualquier manera?

Yo tomaría este enfoque. La Política del mismo origen aún se asegurará de que cualquier atacante no pueda agarrar el token CSRF.

  

En este momento, los tokens CRSF aseguran que la solicitud proviene de un   Página específica - eso tendrá que cambiar para cualquier fondo   Proceso para trabajar. En su lugar, tendrá que haber algún tipo de token CSRF   servicio, por lo que solo podremos asegurarnos de que el usuario haya   y recientemente he podido hacer una solicitud de ese servicio. Es eso   ¿Sigue siendo adecuada la protección contra la CSRF?

Es lo suficientemente bueno como para tener un token CSRF por sesión de usuario. Hay poca necesidad de ir más granular que esto y hacerlo por página. Siempre que el token esté asociado con la sesión y no pueda usarse para otras sesiones, esto mitigará el CSRF.

Un servicio de token CSRF es una buena idea.

    
respondido por el SilverlightFox 09.08.2016 - 10:34
fuente

Lea otras preguntas en las etiquetas