cookie CSRF vs token basati su sessione

12

Genererò un token CSRF e lo includerò in un campo modulo nascosto. Quando ricevo la richiesta, verificherò il valore del modulo rispetto al valore memorizzato nella sessione dell'utente o in un cookie.

È ancora accettabile dal punto di vista della sicurezza memorizzare questo token nel cookie anziché nella sessione?

    
posta Jarrod Everett 23.08.2012 - 16:16
fonte

3 risposte

5

Anche se non riesco a pensare ad attacchi diretti su un simile sistema, direi che non è una buona idea mettere tali segnalini sul lato client. Ti stai aprendo alle perdite potenziali . Conservarli nella sessione li rende impossibili da recuperare.

    
risposta data 23.08.2012 - 16:20
fonte
8

L'archiviazione dei token in un cookie non è una soluzione al problema CSRF. La vulnerabilità di CSRF deriva dal fatto che il browser invia automaticamente i cookie insieme alla richiesta. Di conseguenza, l'applicazione considera tale richiesta come proveniente da un utente valido (e autenticato). L'unica cosa di cui ha bisogno l'aggressore è la richiesta esatta che deve essere inviata. L'introduzione di token anti-CSRF casuali (richiesta specifica o specifica per sessione) fa sì che sia impossibile (o solo molto difficile) preparare una richiesta valida (in genere l'utente malintenzionato non conosce il valore valido per il token anti-csrf) e tale richiesta sarà rilasciato dal server.

Se inserisci il token in un cookie, verrà inviato automaticamente al server, proprio come cookie di sessione, quindi non otterrai alcuna protezione aggiuntiva.

EDIT: Potrei fraintendere la tua domanda. Potresti parlare del cosiddetto pattern a doppio invio dei cookie in cui lo stesso valore viene inviato in campo nascosto e cookie.

Sì, questo approccio è accettabile quando la memorizzazione del token CSRF in sessione è problematica, puoi leggere di più su questo qui: Double Submit Cookies .

    
risposta data 24.08.2012 - 08:28
fonte
0

La sua memorizzazione come cookie semplifica l'implementazione degli attacchi di replay.

Se è archiviato nella sessione, anche se c'è una piccola finestra in cui la riproduzione dello stesso token avrà effetto su una CSRF, la finestra di opportunità viene ridotta in modo massivo, in particolare se si aggiungono alcune convalide di sessione (tenendo traccia delle modifiche di user-agent, ma fai attenzione che Chrome eseguirà l'upgrade in modo trasparente a metà sessione o utilizzando il nome dell'organizzazione dall'indirizzo ip del client)

    
risposta data 23.08.2012 - 16:54
fonte