L'errore maggiore che stai facendo è aumentare l'opportunità di afferrare quella coppia nome utente / password. Persino il modo in cui funziona SSL, una volta che l'autenticazione è stata stabilita, si negozia una chiave di sessione per la collaborazione attuale.
Il tasto di sessione è un concetto molto importante, in quanto può aiutare a determinare quale sia una sessione valida o meno. Prendiamo ad esempio il seguente scenario:
- L'utente accede a una macchina, fa alcune cose e quindi deve lasciarlo. Stupido, ha dimenticato di bloccare il terminale e la sessione è ancora attiva.
- L'utente effettua l'accesso su un secondo computer e aggiunge altro materiale.
- Un utente malvagio incappa sulla prima macchina e prova a fare cose.
Se si utilizza la combinazione nome utente / password per ogni richiesta il server non in grado di rilevare quale macchina è che - in particolare se sono dietro lo stesso firewall / gateway. Usando una chiave di sessione negoziata ogni volta che l'utente accede il server può rilevare quale sessione è quale. Infatti, quando viene implementato correttamente, la vecchia chiave di sessione viene invalidata in modo che eventuali richieste future che utilizzano quella chiave di sessione non riescano.
Per le chiavi di sessione assicurati che si applichino le seguenti condizioni:
- È univoco per ogni combinazione di nome utente / password
- È univoco per ogni sessione autenticata
- Le vecchie chiavi di sessione sono invalidate e non più utilizzate. (il riciclaggio è OK solo quando i meccanismi di sessione del client falliranno comunque. I.e il cookie scade e la sessione del server scade).
Questo consente all'utente di passare da una macchina all'altra (la registrazione in acqua dolce su ogni macchina), mentre si fa la vostra diligenza per evitare che qualcuno rubare la loro sessione.