In che modo le richieste Ajax sono vulnerabili agli attacchi CSRF se viene applicata la politica Stesso origine?

14

Quello che so su CSRF è che un sito Web malintenzionato induce un utente normale a inviare una richiesta a un sito Web attendibile utilizzando un modulo.

Capisco che sia possibile perché possiamo pubblicare moduli su domini diversi. Tuttavia, vedo i post di Stackoverflow che dicono che si dovrebbero proteggere anche le richieste AJAX usando un token.

La politica Same-origine impone una richiesta AJAX da rilasciare solo al dominio che il lo script è stato caricato da?

Ho sentito parlare di Condivisione di risorse tra origini , ma se la mia comprensione è corretta, ha bisogno del server web per abilitarlo, quindi un normale server non dovrebbe consentire tale richiesta.

    
posta Songo 26.05.2014 - 16:46
fonte

1 risposta

15

La richiesta può ancora essere inviata, non è stato letto :

  • Cross-origin writes are typically allowed. Examples are links, redirects and form sumissions [sic].
  • Cross-origin reads are typically not allowed.

Quindi, solo la lettura della risposta è protetta dalla stessa politica di origine, non dalla creazione della richiesta stessa, sebbene solo determinate intestazioni possano essere utilizzate in un dominio incrociato senza CORS. Ad esempio, sono consentite solo le seguenti intestazioni:

  • Accept
  • Accept-Language
  • Content-Language
  • Last-Event-ID
  • Content-Type

Altri, come X-Requested-With non sono consentiti, pertanto la presenza di un'intestazione personalizzata potrebbe essere verificata come convalida la richiesta non è stata effettuata su più domini o da un modulo non AJAX.

Tieni presente che una versione precedente di Flash includeva una vulnerabilità che consentiva intestazioni da impostare che di solito è limitato dal browser e che un'altra vulnerabilità che ha consentito il cross richieste di dominio da effettuare senza un crossdomain.xml valido per consentire la richiesta, quindi un l'approccio basato su token potrebbe essere ancora il metodo più sicuro per prevenire CSRF .

    
risposta data 27.05.2014 - 11:32
fonte

Leggi altre domande sui tag