La JWT è presente nei cookie con qualsiasi soluzione CSRF altrettanto vulnerabile all'XSS di JWT in localStorage?

3

Ho letto che i token JWT non devono essere memorizzati in localStroage perché gli attacchi XSS possono leggerli. La soluzione proposta è di memorizzare i token JWT nei cookie HTTPOnly e utilizzare i cookie anti-CSRF con doppio invio. OWASP dice che tutte le soluzioni CSRF sono vulnerabili a XSS. Se questo è il caso, allora la JWT nei cookie HTTPOnly con CSRF è vulnerabile a XSS? Se è così, perché preoccuparsi anche con CSRF e semplicemente memorizzare il tuo JWT in localStorage?

    
posta Bradford 11.04.2016 - 20:23
fonte

1 risposta

3

I've read that JWT tokens shouldn't be stored in localStroage because XSS attacks can read them.

È vero. Se memorizzi informazioni nel tuo JWT e non desideri che un utente malintenzionato lo legga tramite XSS, memorizzarle in un cookie httpOnly è una buona idea.

The proposed solution is to store JWT tokens in HTTPOnly cookies and use CSRF w/ double-submit cookies.

Penso che tu stia confondendo due cose qui. Memorizzare i token in un cookie httpSolo è già la soluzione per loro non essere letti.

CSRF è un argomento diverso e non può essere utilizzato per leggere i dati. Può tuttavia essere utilizzato per eseguire azioni su un sito Web per un utente che quell'utente non ha intenzione. Una soluzione a questo è la doppia modalità di invio dei cookie.

OWASP says all CSRF solutions are vulnerable to XSS.

Sì, praticamente.

If that's the case, then is JWT in HTTPOnly cookies with CSRF just as vulnerable to XSS?

Il fatto è che non puoi usare un token anti-CSRF che è archiviato in un cookie httpOnly con il pattern di doppio invio dei cookie .

Hai bisogno dell'accesso client al token, altrimenti non sarebbe possibile inserire il token nel modulo.

Quindi, per fare in modo che funzioni, è necessario che il proprio cookie non sia httpOnly o che il token venga archiviato da qualche altra parte oltre al cookie, ad esempio nella memoria locale.

In ogni caso, un utente malintenzionato può ignorare la protezione CSRF dopo aver acquisito XSS.

If so, why even bother w/ CSRF and just store your JWT in localStorage?

Devi conservare il tuo JWT in un cookie httpSolo se vuoi nascondere il suo contenuto da un utente malintenzionato anche se esiste una vulnerabilità XSS. Se non ti interessa, o se hai bisogno di accedere alle informazioni da solo, localStorage funziona altrettanto bene.

    
risposta data 11.04.2016 - 21:24
fonte

Leggi altre domande sui tag