token anti-CSRF vs Referer e test POST

1

Capisco che i token anti-CSRF siano una porzione di dati inviati nella risposta che ci si aspetta corrispondano nelle richieste successive, ma non sono memorizzati nei cookie. Ad esempio, un modulo con un valore nascosto che deve essere incluso prima di intraprendere un'azione sull'invio.

Lo svantaggio di questo è che tutte le app e i programmatori devono ricordare di includere questo token extra.

Vedo una soluzione alternativa che consente alle singole app di richiedere solo il POST per le modifiche ai dati e il loro lavoro è fatto.

Per far sì che tutto funzioni, richiediamo semplicemente a tutte le richieste POST di avere un Referente dello stesso sito.
(non un sito non affidabile, non un sito non https e non un referente vuoto)

Questa soluzione è una sostituzione completa per i token anti-CSRF?

    
posta George Bailey 10.01.2012 - 22:30
fonte

2 risposte

4

Questa non è una soluzione perché i firewall desktop comuni offrono un'opzione per rimuovere l'intestazione del Referer per motivi di privacy.

Inoltre alcuni plugin consentono di impostare l'intestazione Referer su valori arbitrari, sebbene i plugin comuni (Java, Flash) lo impediscano nelle versioni recenti.

    
risposta data 10.01.2012 - 23:27
fonte
1

Aggiunta alla risposta @ Hendrik - per offrire una protezione CSRF che è tollerata dagli utenti è necessario consentire le richieste senza intestazione Referer. Ed è davvero facile fare una richiesta da siti web di terze parti senza questa intestazione - ad esempio https: // la richiesta originata la avrà spogliata, inoltre ci sono vari altri modi per spogliarlo (disclaimer - è la mia ricerca)

Potresti consultare l' intestazione Origin che è la "versione migliore di Referer" ( non è così facile da rimuovere), ma non è ancora ampiamente supportato dai browser e non è pensato per proteggere da CSRF. Per il momento puoi affidarti solo a token (anche il meccanismo anti-CSRF basato su intestazioni di richieste personalizzate è stato aggirato di recente ).

    
risposta data 11.01.2012 - 20:41
fonte

Leggi altre domande sui tag