Perché JS di CSRF non può leggere il token tramite GETting html

7

1) L'utente è registrato in bank.com in una scheda, dove tutto è protetto dai token CSRF. Quindi apre evil.com in un'altra scheda.

2) Javascript in evil.com potrebbe provare a fare una richiesta POST a bank.com/send_money solo se sapesse csrf_token.

3) Per poter rivelare csrf_token, javascript in evil.com potrebbe provare a fare GET una chiamata ajax su bank.com/send_money per ottenere lo stesso utente html che otterrebbe visitando questa pagina nel suo browser. E poi leggi il token.

DOMANDA - perché l'ultimo passo fallirà e fallirà sempre?

Per quanto ho capito, bank.com risponderà effettivamente a questa richiesta e renderà tutto l'html semplicemente buono, ma sul lato client il browser deciderà che il contenuto proveniente da un altro dominio non dovrebbe essere accessibile, quindi fallisce.

Se c'è un iframe in evil.com su bank.com/send_money, l'iframe caricherà tutto l'html, ma di nuovo il browser deciderà che questo html non può essere usato da javascript e può essere visto solo in iframe. Pertanto, JS non può ottenere il token e non può effettuare la richiesta POST.

È corretto? Questo può essere ingannato?

    
posta user3702861 27.06.2014 - 12:54
fonte

1 risposta

10

JavaScript non può leggere il contenuto di altri siti a causa della politica della stessa origine .

Questo è uno dei principi fondamentali della sicurezza Web e va ben oltre la protezione CSRF. Senza la politica della stessa origine, qualsiasi sito web potrebbe leggere le nostre e-mail tramite il nostro webmailer, dare un'occhiata al nostro conto PayPal, ottenere le nostre informazioni private da Facebook ecc. Quindi i venditori di browser si impegnano a prevenire questo.

Come con tutti i meccanismi di sicurezza, potrebbero esserci dei bug. E c'è anche un attacco specifico chiamato DNS rebinding . Ma tutto sommato, la politica della stessa origine funziona molto bene e non può essere facilmente sconfitta.

    
risposta data 27.06.2014 - 13:44
fonte

Leggi altre domande sui tag