¿Cómo se usa el patrón de token de Synchronizer para evitar la seguridad CSRF?

He estado leyendo sobre el uso de un patrón de token de sincronizador para evitar el CSRF (CSRF significa falsificación de solicitud entre sitios), y no entiendo cómo es realmente seguro.

Digamos que tengo un sitio de banco falso fakebank.com con dos urls:

fakebank.com/withdrawForm.html - una solicitud GET que muestra el formulario de retiro de dinerofakebank.com/doWithdraw - POSTE a esta url para hacer el retiro

Mi comprensión de la falla de seguridad es quemaliciousSite.com puede falsificar una solicitud POST parafakebank.com/doWithdraw, y si actualmente está conectado a fakebank, el POST tendrá éxito.

Digamos que implementamos un patrón de token de sincronizador que incrustará un código secreto enfakebank.com/withdrawForm.html. HipocresíamaliciousSite.com simplemente falsificar una solicitud GET para ese formulario, analizar el resultado html, obtener el token y luego crear la solicitud POST con ese token?

Esto es asumiendo que fakebank.com no está verificando HTTP Referrer u Origin omaliciousSite.com está suplantando con éxito que el Referrer / Origin es fakebank.com.

Respuestas a la pregunta(2)

Su respuesta a la pregunta