La scadenza della sessione per tutte le applicazioni Web è possibile?

0

Nel caso in cui qualcuno visiti un sito infetto la sua sicurezza, se i suoi cookie vengono rubati, potrebbe essere compromessa. C'è un modo astratto per far scadere una sessione sull'id della sessione rubata in modo che l'id sia praticamente inutile?

Sto cercando di proteggermi dal lato client. Un modo intelligente per scadere tutte le sessioni senza occuparsi di visitare manualmente ogni sito.

Esiste un tale strumento?

    
posta Mini Fridge 19.11.2015 - 03:11
fonte

4 risposte

1

Se hai ancora l'ID di sessione, puoi uscire dalle applicazioni specifiche. Un modo semplice per invalidare tutte le sessioni sembra impossibile. Potresti provare a usare un po 'di euristica come la consapevolezza che un cookie con un SID impostato per domain example.com avrà una pagina di disconnessione all'indirizzo example.com/logout o example.com/logout.html o qualcosa di simile. Usando questa euristica potresti visitare automaticamente tutte queste pagine di logout e sperare per il meglio. Forse qualcuno potrebbe scrivere un tale script e provare a escogitare un modo standardizzato di invalidare la sessione per cui hai il SID.

Non esiste un modo standard per invalidare una sessione su cui poter fare affidamento. Poiché ogni ID di sessione rimane valido fino a quando il server mantiene la sessione, non c'è molto che tu possa fare dal lato client.

È possibile fare affidamento sulla misura lato server che lega la sessione al dispositivo specifico come indicato da Steffen, ma questo non è sempre il caso. In ogni caso non puoi fare molto.

Se puoi specificare lo scenario in modo più dettagliato, potrebbero esserci altre soluzioni.

    
risposta data 24.11.2015 - 17:20
fonte
1

Sembra che tu stia cercando di impedire il dirottamento della sessione.

Se vuoi far scadere la loro sessione sul lato server devi dare loro un token (difficile da indovinare) e legare un tempo di scadenza su di esso sul loro record utente nel tuo database. Poiché non si è in grado di garantire che il cookie sia stato rimosso, è necessario che il browser invii i cookie e quindi si attui dalla scadenza se il cookie è effettivamente scaduto o meno.

Si consiglia inoltre di aggiornare il token dopo che i privilegi dell'utente sono cambiati . Io aggiorno personalmente il token tra ogni richiesta di pagina per evitare di perdere qualcosa.

Assicurati di utilizzare SSL ogni volta che si trasmette il cookie o sarà possibile annusarlo.

Ulteriori informazioni sono disponibili su Scheda Cheat di OWASP Wiki Session Management

    
risposta data 19.11.2015 - 18:25
fonte
1

I browser hanno impostazioni incorporate per eliminare tutti i cookie o particolari cookie. Quindi è possibile che un utente possa forzare la "scadenza immediata" (cioè la cancellazione) dei cookie in questo modo. Ciò che non è possibile è che una visita a un sito possa forzare la cancellazione o la scadenza di cookie appartenenti ad altri siti.

EDIT: dopo la modifica della domanda sembra che tu chieda in che modo il server può rilevare che il cookie è utilizzato in modo improprio (ad esempio il sequestro di sessione) e invalida il cookie. Alcuni siti lo fanno incorporando una sorta di impronta digitale del browser o l'indirizzo IP del client nel cookie in modo che venga rilevato l'utilizzo del cookie da un altro browser o IP. Una volta rilevato, il cookie può essere semplicemente rimosso dal database e quindi non è più valido. Per ulteriori informazioni, consulta OWASP su Session Hijacking .

    
risposta data 19.11.2015 - 06:59
fonte
1

Bene, la mia interpretazione di questo è, e, per favore, correggi se ho torto: l'utente ha rubato il suo laptop, e ha molte sessioni aperte sui siti web, forse perché hanno controllato la casella "Ricordami", o proprio come avendo un sacco di schede aperte. L'utente vuole ora assicurarsi che la persona che ha rubato il laptop non possa usare le sue sessioni, chiudendo le sessioni remote in qualche modo.

Non possono cancellare i cookie, perché non hanno il dispositivo su cui sono memorizzati i cookie. Pertanto, sono alla mercé degli sviluppatori di applicazioni web. Ci sono diverse possibilità qui:

  1. L'applicazione fornisce un sistema di gestione delle sessioni, in cui l'utente può accedere, vedere sessioni attive e chiuderle se lo desiderano. In questo caso, dovrebbero effettuare il login, chiudere eventuali altre sessioni e, solo per essere sicuri, controllare se si sono verificate attività indesiderate sull'account. Un esempio di questo tipo di sito sarebbe Facebook.
  2. L'applicazione consente solo a un'istanza di ciascun utente di accedere in qualsiasi momento. Ciò evita accessi simultanei ed è generalmente una buona cosa supportare se l'applicazione coinvolge qualsiasi forma di transazioni, sia finanziarie che di altro tipo. In questo caso, effettua semplicemente il login. Qualsiasi altra sessione attiva verrà terminata. La maggior parte delle banche operano in questo modo, sebbene tendano anche a periodi di scadenza della sessione brevi.
  3. Se l'applicazione ha una breve durata della sessione (ad esempio il portatile è stato afferrato mentre si effettuava una transazione bancaria online), è solo un problema se possono utilizzare l'account rapidamente. Se non ci riescono, la sessione verrà terminata a breve comunque.
  4. Se l'applicazione combina un token di sessione con un identificativo client, questo non aiuta molto in questa circostanza. In teoria ci potrebbero essere applicazioni in cui è possibile bloccare specifici identificatori del cliente, ma ogni istanza di identificatori del cliente che ho incontrato personalmente è stata associata a un sistema di gestione delle sessioni.
  5. Se nessuna delle precedenti condizioni è vera, prova ad accedere all'applicazione e a modificare la password. I sistemi ben sviluppati scadranno tutte le sessioni aperte a quel punto. Potrebbe valere la pena testarlo aprendo due sessioni (magari in browser distinti) e vedendo se la sessione nel browser che non usi per cambiare la password viene chiusa quando lo fai - la sessione rubata dovrebbe fare lo stesso.
  6. Se ciò non funziona, non c'è molto che tu possa fare - l'applicazione non supporta la scadenza della sessione in modo accessibile all'utente. Contatta il proprietario dell'applicazione e chiedi se possono cancellare manualmente quella sessione, ma non darei molte speranze.

In breve, non esiste un modo standard che funzioni per tutti i siti se non è possibile eliminare i cookie.

    
risposta data 19.11.2015 - 23:55
fonte

Leggi altre domande sui tag