Hai bisogno della memoria . Se il server non ricorda chi sono i client e quando sono stati autenticati per l'ultima volta, e si fida dei client per tenere traccia di se stessi, i client sono in grado di ingannare il server. Quello che descrivi (salvando e reimpostando il cookie) viene chiamato, in generale, un attacco di riproduzione . Per vedere le cose concettualmente, con la scadenza del cookie, ci si aspetta che il potenziale aggressore sia abbastanza aggraziato da dimenticare alcuni dati sensibili, dove non dimenticare che implicherebbe qualche guadagno per l'aggressore.
Questo porta a due modi principali per evitare il problema:
-
Chiedi al server di ricordare l'ora dell'ultima autenticazione per ciascun utente e applica la scadenza, indipendentemente dal fatto che il browser client abbia scaduto o meno il cookie.
-
Codifica nel cookie la data di scadenza, in modo che il server possa controllarlo. Ciò sta scaricando la memoria del server sui client; per renderlo sicuro (poiché il client potrebbe modificare i suoi cookie per prolungare la durata della sessione), è quindi necessario un po 'di crittografia, ovvero aggiungere un MAC calcolato con una chiave segreta che il server conosce ma che non dice a nessuno (in particolare, i client non lo sanno).
Poiché la crittografia è piena di trappole letali, sei incoraggiato ad applicare il primo tipo di soluzione. Si tratta principalmente di aggiungere una colonna nella tabella degli utenti, nel tuo database (presumo che tu abbia un database sul server); questo sarà economico.
La scadenza dei cookie non è comunque affidabile, anche in contesti non ostili, perché alcuni utenti non impostano correttamente l'orologio del computer. Alcuni sono disattivati di alcune ore (ad es. Sono nel fuso orario sbagliato) e alcuni sono disattivati da diversi anni (semplicemente non gli interessa).