Perché SOP consente l'invio di moduli di origine incrociata?

4

Lo stesso criterio di origine non impedisce all'origine foo.bar di creare un modulo con l'attributo di azione impostato su un'altra origine baz.duh e consente anche di inviare questo modulo a livello di codice senza che l'utente conosca eventi non attendibili originati da JavaScript semplicemente caricando la pagina . Per risolvere questo problema, i programmatori sono obbligati a utilizzare i token CSRF.

Se le richieste AJAX provenienti da XMLHttpRequest e canvas oggetti sono soggette alla Stessa politica di origine e non è consentito l'accesso alla risposta, perché le richieste di invio di moduli / richieste XHR non sono semplicemente consentite? Qual è il ragionamento alla base di questa indennità?

So che gli endpoint che accettano il metodo di richiesta GET possono essere sfruttati anche dalle immagini, ma questa domanda riguarda solo POST e forme di metodo simili. Il fabbisogno di token CSRF non scomparirebbe se la SOP non consentisse la presentazione della forma di origine incrociata? Quale scopo serve la presentazione della forma di origine incrociata?

    
posta Awal Garg 30.05.2015 - 21:40
fonte

1 risposta

1

La stessa politica di origine protegge il cliente. I token CSRF proteggono il server.

SOP impedisce al sito dannoso A di accedere alle credenziali dei cookie detenute dal cliente per il sito B che altrimenti verrebbero inoltrate insieme alla richiesta di origine incrociata. Vedi In che modo i server web applicano lo stesso -origin policy? (risposta breve: non lo fanno)

link nell'altra risposta afferma:

While prevention of cross-origin writes would mitigate entire classes of web security vulnerabilities (CSRF, XSS, etc), the web is a far richer platform because some forms of Cross-Origin Writes are permitted in most cases.

In particolare, cose come OpenID e molti sistemi di elaborazione delle carte di credito si avvalgono della capacità di passare lo stato dal sistema di un dominio a un altro. Quindi vietare tutti l'autenticazione incrociata HTTP sarebbe seriamente limitante. Pertanto è necessario un meccanismo alternativo. I token CSRF provano che qualsiasi cosa stia mandando la richiesta HTTP (ricorda, non necessariamente un browser!) Ha ottenuto il token di autorizzazione da una pagina web che il server ha precedentemente emesso.

    
risposta data 08.07.2015 - 16:52
fonte

Leggi altre domande sui tag