La risposta di Matthew è sicuramente la risposta corretta, ma ho pensato di seguire ulteriori dettagli:
L'autenticazione basata su cookie ha un grosso punto debole: il cookie è tutto ciò che serve per l'autenticazione. Se qualcuno è in grado di rubare i cookie di un utente, non c'è nulla di costruito nel processo di autenticazione dei cookie che consenta al server sapere che gli shenanigans siano accaduti. Usi l'esempio di un utente malintenzionato che ha accesso fisico al computer, ma è un caso raro da cercare. Le vulnerabilità XSS su siti con cookie non sicuri sono un modo molto più comune di rubare i cookie. Comune anche: attacchi di fissazione della sessione, sniffing di pacchetti su reti wireless non sicure per siti che non utilizzano https e varie altre forme di attacchi MITM. Per essere chiari, questo non è solo un problema per l'autenticazione basata su cookie. Il problema di fondo è che HTTP è un protocollo stateless, il che significa che se riesci a riprodurre completamente una richiesta precedente, non c'è modo (inserito in HTTP) che il server sappia che non sei la stessa persona.
Quindi, in che modo i servizi si assicurano che la persona con cui parlano sia la persona con cui vogliono effettivamente parlare? La risposta non è necessariamente diretta. Come menziona Matteo, devi monitorare le tue credenziali di accesso in altri modi: modifiche agli indirizzi IP, modifiche al browser, modifiche degli user-agent, ecc ... In pratica, tieni traccia dei metadati relativi ai dispositivi con cui stai parlando e fai molta attenzione a eventuali modifiche sospette.
Come si nota in un commento, anche questo non è infallibile. Ovviamente le persone possono fingere agenti utente. Questo potrebbe essere contrastato usando tecniche di fingerprinting del dispositivo ( Device fingerprinting e mass Computer Surveillance ) a cui un aggressore ha sostanzialmente meno controllo. Gli indirizzi IP non sono corretti, in particolare per i gestori di telefonia mobile, ma fino a quando ogni dispositivo ha il proprio cookie, anche questo può potenzialmente essere monitorato e contabilizzato. Se un determinato cookie è stato associato allo stesso indirizzo IP per 6 mesi e viene visualizzato improvvisamente in un altro paese, è probabile che tu abbia un problema. Se un dispositivo cambia frequentemente gli indirizzi IP (ad esempio un telefono) ma ora si presenta con un indirizzo IP non associato a un gestore di telefonia mobile o alla loro normale area geografica, probabilmente hai un problema. L'altra cosa da tenere a mente è che ogni dispositivo dovrebbe avere un cookie unico. Pertanto, anche se normalmente cambia l'indirizzo IP associato a un cookie, se ora stai ricevendo richieste da quel cookie da due diversi indirizzi IP allo stesso tempo , probabilmente hai un problema.
Alla fine, il modo più semplice per sistemare le cose se il loro sembra essere qualcosa di sospetto è semplicemente invalidare tutti i cookie (ovvero disconnettere l'utente). L'utente legittimo è solo un po 'scomodato - devono solo riconnettersi. L'utente malintenzionato ha però perso tutti gli accessi e deve ricominciare da capo.
Il take away
Ci dovrebbe essere un paio di ovvi suggerimenti dalla discussione di cui sopra:
- Non esiste una risposta definitiva. Un attaccante sufficientemente intelligente ha molti modi per cercare di nascondere che ha rubato le credenziali, una volta rubate.
- Un sistema che non ha impostato estese sicurezza / monitoraggio attorno alle proprie credenziali di accesso non avrà modo di sapere che qualcosa sta succedendo e nessun modo di reagire.
- Non è chiaro il punto "Ok, sei sicuro adesso". C'è molto che un sistema può fare per proteggere le credenziali di accesso, ma alla fine ci sono cose non sotto il controllo del server che possono permettere il furto di credenziali. Ci sono modi per rilevare le credenziali rubate, ma non sono sempre facili o semplici e possono richiedere un grande sforzo per l'impostazione, la messa a punto e l'uso. È anche possibile essere troppo zelanti e causare problemi agli utenti legittimi.
Quindi, come fanno i grandi a minimizzare il danno potenziale arrecato dalle persone che si allontanano con le credenziali? Risposta breve: difesa approfondita. Credenziali di accesso sicuro a tutti i livelli dell'applicazione, monitoraggio dei metadati dai client che utilizzano le credenziali di accesso e, in caso di dubbio, eseguirne il logout.