1) El usuario está registrado en bank.com en una pestaña, donde todo está protegido por tokens CSRF. Luego abre evil.com en otra pestaña.
2) Javascript en evil.com podría intentar realizar una solicitud POST a bank.com/send_money solo si supiera csrf_token.
3) Para revelar csrf_token, javascript en evil.com podría intentar hacer una llamada GET ajax a bank.com/send_money para obtener exactamente el mismo usuario html al visitar esta página en su navegador. Y luego lee el token.
PREGUNTA: ¿por qué el último paso fallará y siempre fallará?
Según tengo entendido, bank.com realmente responderá a esta solicitud y procesará todo el html, pero en el lado del cliente, el navegador decidirá que el contenido proveniente de otro dominio no debería ser accesible, por lo tanto, falla.
Si hay un iframe en evil.com para bank.com/send_money, el iframe cargará todo el html muy bien, pero nuevamente el navegador decidirá que javascript no puede usar este html y solo se puede ver en iframe Por lo tanto, JS no puede obtener el token y no puede realizar una solicitud POST.
¿Es correcto? ¿Puede ser engañado?