Quanto è sicuro utilizzare l'applicazione Web basata su JWT su un computer condiviso?

2

Considerando che ho un'applicazione web basata su JWT, che non controlla JWT rispetto ad alcuni database (il che, a mio modo di vedere, ha reso nullo l'utilizzo di JWT poiché qualsiasi stringa casuale avrebbe reso lo stesso). Il timeout JWT è abbastanza lungo, in modo che duri almeno alcuni minuti dopo che ho 'disconnesso'.

Il computer è condiviso, ma è sicuro che non abbia keylogger, sniffer o modifiche del browser installati (che, diciamo, possono essere verificati, o il sistema è ben protetto e ha solo la connessione internet monitorata, nessuna periferica, o semplicemente tutti è monitorato). Il JWT è memorizzato nella memoria JavaScript, o in localStorage, che viene pulito dopo aver premuto il pulsante 'logout'. La scheda in cui viene chiusa l'applicazione. Dopo che me ne vado, chiunque può sedersi e utilizzare lo stesso browser.

Allora, quanto è sicura la mia applicazione web? Se qualcuno ottiene il token, sarà comunque in grado, per qualche minuto, di lavorare come se fossi io. La memoria locale è stata eliminata. Il debugger del browser era inattivo o è stato eliminato. C'è un altro posto dove chiunque può accedere a dove può essere letto il token?

    
posta 9ilsdx 9rvj 0lo 15.11.2016 - 15:47
fonte

2 risposte

1

Il JWT ha la stessa protezione di un cookie, eccetto che si basa sulla capacità dello sviluppatore di gestire correttamente la gestione del token. Mettere il token è localStorage significa che può persistere attraverso la chiusura del browser a meno che non venga fatto qualcosa esplicitamente per rimuoverlo (ad esempio, pulsante di disconnessione, agganciare l'evento close per cancellarlo). In alternativa sessionStorage funziona in modo simile, ma cancellerà automaticamente i valori quando il browser viene chiuso (non è possibile condividere il token attraverso le schede / finestre del browser).

Inoltre, la capacità di impedire cose come il token XSS di rubare è notevolmente ridotta perché qualsiasi JavaScript può interrogare localStorage / sessionStorage, mentre il browser ha difese integrate per impedire a JavaScript di leggere i cookie. D'altra parte, è possibile ottenere alcune difese intrinseche contro CSRF perché il token deve essere aggiunto manualmente alla richiesta.

Quindi, come tutte le cose, tutto dipende dai tuoi requisiti di sicurezza. Dati tutti i tuoi avvertimenti, sembra che potrebbe andare bene così da essere alla pari con le sessioni basate sui cookie. D'altra parte, non necessariamente protegge da qualcuno seriamente interessato a rubare il tuo token. Detto questo, un browser non farà molto per aiutarti comunque in questo senso, quindi potresti prendere in considerazione la richiesta di avviare tutte le sessioni in una sessione di navigazione privata / in incognito / ecc.

    
risposta data 15.11.2016 - 16:49
fonte
0

La cosa semplice da fare in questo caso, che dovresti comunque fare, è - al logout - invalidare il token sul server. Ora non ha importanza dal momento che nessun attacco di riproduzione è possibile.

Ovviamente, ciò richiede un po 'di elaborazione sul server che JWT sta tentando di limitare, ma in realtà non esiste un modo realistico per fornire una buona sicurezza senza alcuna elaborazione da parte del server.

    
risposta data 15.12.2016 - 20:46
fonte

Leggi altre domande sui tag