Origine CSRF e intestazione del referer basta controllare l'host?

0

Nota: questa domanda non è la stessa del possibile duplicato collegato. Quella domanda chiede a come controllare l'intestazione origine / referente protegge contro CSRF. Questa domanda ti chiede come implementare i dettagli specifici.

Vedo molti posti da proteggere contro CSRF per un'API REST, dovresti controllare le intestazioni di referer e origin. Tuttavia, nessuno sembra spiegare i dettagli di ciò. Sta solo controllando che l'host sia lo stesso? Anche lo schema dovrebbe essere controllato?

    
posta srchulo 06.08.2018 - 01:50
fonte

2 risposte

1

Non sono sicuro di essere d'accordo con la premessa che il controllo di referenze e intestazioni di origine sia la migliore difesa. In alcuni casi, mancano entrambe le intestazioni. In questi casi l'unica opzione sicura è bloccare la richiesta, che potrebbe interrompere la funzionalità per alcuni utenti legittimi.

Se questo è ancora il percorso che vuoi intraprendere, OWASP ha un sacco di buone informazioni sugli aspetti tecnici :

  • Inizia con l'intestazione di origine e, se manca, utilizza l'intestazione di riferimento.
  • Ancora, se nessuno di questi è presente, devi bloccare.
  • Confronto URL: s potrebbe sembrare semplice, ma in realtà è una cosa molto difficile da fare. Assicurati che il confronto sia corretto e ad es. che good.com.evil.com non passa come good.com . Questo è solo un esempio, sono sicuro che ci sono più insidie là fuori. Preferibilmente dovresti usare una buona libreria ben testata per questo compito.
  • Probabilmente è bene controllare che lo schema sia http:// o https:// . Non sono sicuro se ci sono degli attacchi che possono essere usati se questo controllo non viene eseguito, ma dio sa quali astuti trucchetti ci sono là fuori con l'URI dei dati: s o cosa no.

Se vuoi altre opzioni, considera i classici come token anti-CSRF o double submit cookies. O per un'API, basta usare un token al portatore nell'intestazione dell'autenticazione.

    
risposta data 06.08.2018 - 11:12
fonte
0

Per i dettagli su come le intestazioni intendono proteggere contro CSRF, vedere In che modo l'invio di intestazioni HTTP del referrer protegge dagli attacchi CSRF ?

Il key takeaway è che sono un meccanismo che consente ai clienti fidati di proteggere i loro utenti da siti Web dannosi. Potrebbero essere facilmente falsificati da un client malintenzionato.

Come per l'intestazione host che chiedi, questo può potenzialmente essere riscritto da proxy inversi ecc. lungo la strada (quindi esistono intestazioni di inoltro speciali per catturare ciò, vedi link ). Usando le intestazioni progettate per questo scopo, riduci le possibilità che vengano riscritte (qualsiasi software intermedio decente non dovrebbe toccarle) e il tuo server invia una risposta errata al client.

    
risposta data 07.08.2018 - 07:16
fonte

Leggi altre domande sui tag