Lo stato della sessione all'interno di un'applicazione dovrebbe idealmente essere gestito lato server dal punto di vista della sicurezza.
Quindi, in termini di scadenza, dovrebbe essere archiviato un elenco di sessioni attive che dovrebbero essere rimosse dal server dopo un periodo di inattività concordato (esattamente ciò che ciò dipenderebbe dalla sensibilità dell'applicazione, dalla base di utenti, ecc.)
L'applicazione dovrebbe anche offrire una funzione di disconnessione esplicita che termina la sessione lato server degli utenti.
Se ti affidi a misure sul lato client (ad es. scadenza del cookie) c'è sempre il rischio che un utente malintenzionato possa accedere a un cookie e replicarlo dopo la scadenza. Se la tua domanda non è in grado di stabilire se quel cookie debba essere ancora valido, questo potrebbe esporlo a un accesso non autorizzato.
In questo caso l'uso di flag di cookie (ad esempio secure, httpOnly) può ridurre i rischi di un utente malintenzionato che compromette il token di sessione di un utente, ma non rimuovere il problema centrale che il server non è in grado di stabilire se il cookie debba ancora essere valido o meno.
È possibile gestire la scadenza della sessione senza mantenere lo stato sul server utilizzando i cookie protetti dalla manomissione e memorizzare la data / ora di scadenza al loro interno (ad es. la gestione della sessione predefinita di ASP.NET), ma soffre della debolezza del fare è difficile consentire agli utenti di terminare esplicitamente la sessione prima del tempo memorizzato nel cookie.