È principalmente dovuto alla storia. Le persone erano a conoscenza della CSRF fin dai primi anni 2000, prima che l'intestazione Origin fosse stata inventata. Il concetto di "token in un campo nascosto" ha fornito ai siti un modo immediato per correggere il problema, senza attendere l'aggiornamento dei browser. Sebbene il meccanismo sia un po 'disordinato, è possibile che i framework forniscano automaticamente questa funzionalità, con pochi input dagli sviluppatori di applicazioni. In particolare, .Net ha incluso questo fin dall'inizio con EVENTVALIDATION / VIEWSTATE ed è relativamente raro che le applicazioni .NET abbiano difetti CSRF.
Quando CSRF è stato preso sul serio, alcune persone hanno proposto di controllare l'intestazione del Referer per correggere il difetto. È noto che l'intestazione di Referer è facile da falsificare, ma questa idea non è così sciocca come sembra. Quando un utente malintenzionato effettua una connessione diretta a un server Web, è facile falsificare l'intestazione di Referer. Tuttavia, in un attacco CSRF, l'attaccante non sta effettuando una connessione diretta; il browser web della vittima sta effettuando la connessione e l'utente malintenzionato non può facilmente controllare l'intestazione Referer. Tuttavia, questo approccio risulta essere ancora imperfetto. Le versioni precedenti di Flash consentivano a un utente malintenzionato il controllo gratuito dell'intestazione Referer in uno scenario di attacco CSRF. Inoltre, alcuni utenti disabilitano l'intestazione Referer per motivi di privacy, che un sito Web avrebbe errato per un attacco CSRF.
L'intestazione Origin è stata sviluppata come sostituzione più sicura per l'intestazione Referer. In molti modi, è una soluzione molto più ordinata per CSRF ed evita il sovraccarico di gestione dei token. Alcune applicazioni, in particolare le applicazioni a pagina singola, utilizzano l'intestazione Origin come unica protezione CSRF e sono completamente protette. Tuttavia, questa è l'eccezione piuttosto che la regola. Il modello sincronizzatore è ben compreso, ampiamente supportato dai framework e non ha punti deboli noti.
Modifica : Silverlightfox mi informa che quanto segue non è vero. Vedi la sua risposta per maggiori informazioni.
In definitiva penso che OWASP stia arretrando leggermente nei loro consigli. Nel 2015 dovrebbero consigliare i controlli di intestazione Origin come controllo principale, con il modello di sincronizzazione come alternativa legacy.