Questa domanda riguarda solo la protezione dagli attacchi Cross Site Request Forgery.
Si tratta in particolare di: La protezione tramite l'intestazione Origin (CORS) è buona quanto la protezione tramite un token CSRF?
Esempio:
- Alice ha effettuato l'accesso (utilizzando un cookie) con il suo browser a " https://example.com ". Presumo che utilizzi un browser moderno.
- Alice visita " https://evil.com " e il codice lato client di evil.com esegue una sorta di richiesta a " https://example.com " (scenario CSRF classico).
Così:
- Se non controlliamo l'intestazione Origin (lato server) e nessun token CSRF, abbiamo un buco di sicurezza CSRF.
- Se controlliamo un token CSRF, siamo al sicuro (ma è un po 'noioso).
- Se controlliamo l'intestazione Origin, la richiesta dal codice lato client di evil.com dovrebbe essere bloccata proprio come farebbe quando si utilizza un token CSRF, tranne se è possibile in qualche modo per il codice di evil.com impostare l'intestazione Origin.
So che questo non dovrebbe essere possibile con XHR (vedi ad es.Sicurezza per la condivisione di risorse cross-origin ), almeno no, se ci fidiamo che le specifiche W3C siano implementate correttamente in tutti i browser moderni (possiamo?)
Ma per quanto riguarda altri tipi di richieste, ad esempio l'invio di un modulo? Caricamento di uno script / img / ... tag? O in qualsiasi altro modo una pagina può utilizzare per creare (legalmente) una richiesta? O forse qualche noto hack JS?
Nota: non sto parlando di
- applicazioni native,
- browser manipolati,
- bug di cross site scripting nella pagina example.com,
- ...
Origin
? Ciò negherebbe la protezione CORS.