Quali ulteriori attenuazioni sono necessarie a causa di "Continua da dove ho interrotto"?

1

Lavoro con siti sensibili che gestiscono informazioni finanziarie, il mio codice protegge oltre quattro miliardi di sterline di risorse.

Tutti i nostri siti hanno un pulsante di disconnessione e inoltre utilizzano i cookie HttpOnly, Secure, Session per mantenere la sessione di un utente. Sebbene ci aspettiamo che gli utenti facciano clic sul pulsante "Esci", anticipiamo anche che alcuni utenti non lo faranno; di conseguenza, ci affidiamo ai cookie di sessione da eliminare quando l'utente chiude il browser.

Recentemente ho notato che i browser non rilasciano mai i cookie di sessione quando vengono chiusi. Chrome, in particolare, ha una funzione "Riprendi da dove ho lasciato" che persiste i cookie di sessione dopo che il browser è stato chiuso, e per di più questa opzione è selezionata per impostazione predefinita. FireFox ha una funzione simile.

Quali ulteriori attenuazioni hai implementato a causa di questa funzione? Ne abbiamo presi in considerazione alcuni:

  1. OnBeforeUnload / Unload / PageHide il gestore per rilasciare i cookie quando la finestra viene chiusa. Purtroppo non puoi rilasciare i cookie HttpOnly in questo modo.

  2. Cookie di sessione molto brevi che vengono continuamente aggiornati (ogni 30 secondi circa) tramite script. Questo problema è dovuto al fatto che alcuni browser (in particolare su telefoni e tablet) interrompono l'esecuzione di Javascript quando una scheda è inattiva, quindi questo avrebbe l'effetto di far cadere gli utenti quando alterano la scheda o cambiano le finestre.

  3. Gestori AJAX per mantenere un battito cardiaco con il server. Ancora, questo non funzionerà quando la scheda è inattiva.

Sono necessarie ulteriori misure di attenuazione? O è il compratore a stare attento se non si fa esplicitamente il logout? Curioso di ciò che altri professionisti IT hanno fatto al riguardo.

Nota: utilizziamo anche un cookie persistente con una finestra scorrevole di dieci minuti e scadiamo la sessione sul lato server in dieci minuti. Il punto di questo esercizio è di attenuare l'attività dannosa che si verifica all'interno della finestra di 10 minuti, ad es. se qualcuno ti sta osservando attentamente in un internet cafè e prende il controllo della tua workstation se non esegui correttamente il logout.

    
posta John Wu 28.01.2014 - 19:12
fonte

3 risposte

1

Se il tuo sito è così sensibile, imposta una durata massima del cookie di 15 o 30 minuti, anziché la durata della sessione del browser. Ed è sempre il compratore a stare attento se accedono al tuo sito da un luogo pubblico e non si disconnettono.

Questo è quello che vedo su qualsiasi sito finanziario che uso, dalle banche alle carte di credito a qualsiasi altra cosa.

Modifica: Suppongo che non sia completamente vero. Su alcuni siti, ti permettono di "registrare il tuo computer" ... in sostanza, ti permettono di bypassare una parte del controllo di identità una volta (o meglio, eseguire controlli di identità aggiuntivi prima) che lo hai passato una volta da quel terminale. Potresti essere in grado di utilizzare questo metodo per consentire i cookie di durata maggiore su un terminale registrato, se l'utente sceglie di farlo. Ma quando si tratta di applicazioni finanziarie, la soluzione migliore è sempre quella di dare all'utente la minima corda possibile con cui impiccarsi. Altri tipi di applicazioni sono più indulgenti.

    
risposta data 28.01.2014 - 19:22
fonte
1

Una combinazione di propriamente usata OnBeforeUnload e i cookie di breve durata possono aiutarti a ottenere ciò che desideri.

L'idea di base è di inviare una richiesta HTTP quando OnBeforeUnload si attiva e il server deve rispondere invalidando il cookie. In questo modo, non sarai limitato dalle restrizioni sui cookie di HttpOnly. Combina quello con i cookie di breve durata che vengono aggiornati con ogni azione intrapresa dall'utente (ogni volta che un utente intraprende un'azione, invia una richiesta HTTP che imposterà il tempo del cookie per, ad esempio, 5 minuti. qualsiasi azione in 5 minuti, invalidare la sessione sul server .

In questo modo, quando l'utente chiude il suo browser, il cookie verrà invalidato e rimosso. Se succede qualcosa di sbagliato e l'utente riesce a riaprire il suo browser e "Continua [s] dove [ha] lasciato fuori", la sessione sarà comunque scaduta sul server.

    
risposta data 28.01.2014 - 19:41
fonte
1

Ho lavorato in FS prima e direi che questo è un acquirente attento. Se parli di business banking o simili (che suppongo tu sia se una sessione di 15 minuti è scaduta troppo a lungo), prendi in considerazione i contratti sull'utilizzo del sistema solo da sistemi client fidati. Se si tratta di operazioni bancarie al dettaglio, dovrebbe essere in grado di accedere all'utente da un sistema non affidabile e utilizzare sempre in modo esplicito la funzione di disconnessione delle applicazioni.

Lo scenario di rischio che stai osservando, l'accesso dell'utente da un sistema non affidabile in una posizione non sicura (ad esempio Internet Cafe) presenta una serie di rischi peggiori o peggiori di una funzionalità del browser che memorizza i cookie di sessione. Ad esempio, probabilmente un rischio in quell'ambiente è il malware sul PC, nel qual caso l'hacker potrebbe afferrare il cookie, bloccare la richiesta di disconnessione degli utenti dal server e mantenere viva la sessione da sé ...

Un altro rischio in questo ambiente è il malware per la registrazione della sequenza di tasti che, a meno che tu non stia utilizzando 2 fattori, nega comunque la sicurezza del sistema (l'autore dell'attacco ha le credenziali).

    
risposta data 28.01.2014 - 21:19
fonte

Leggi altre domande sui tag