Per rispondere in modo specifico alla tua domanda, la crittografia dei dati casuali non ha valore a meno che tu non stia utilizzando entrambi i crittografati e i dati non crittografati. Ad esempio, uno può essere memorizzato nel database del server , mentre l'altro viene pubblicato nel cookie . Tuttavia, un approccio migliore consiste nell'utilizzare un hash unidirezionale anziché crittografato. Descriverò questo di seguito.
Ecco alcune linee guida per la gestione sicura dei cookie dei token di sessione:
Innanzitutto, assicurati che il cookie sia contrassegnato come Secure
e HttpOnly
e che abbia almeno 72 bit di entropia da un PSRNG crittograficamente sicuro .
Quindi, poiché la connessione è protetta con HTTPS, l'unico modo in cui il cookie verrebbe rubato è un attacco sul lato server (SQLi, ecc.) o un attacco sul lato client (ad esempio un virus sul PC). In entrambi i casi è probabilmente già un serio problema . Ma a volte con questi attacchi, l'autore dell'attacco riceverà solo una quantità limitata di dati. Il solo dirottamento di un token di sessione potrebbe essere un vero risparmio di tempo per l'attaccante, anche se sono possibili anche altri attacchi. Quindi, in alcuni casi uno schema di gestione dei cookie token di sessione ben protetto può fare una grande differenza.
Se il token di sessione è rubato dal client , non puoi fare molto . Mi piace bloccare ogni sessione su un singolo indirizzo IP ma non è accettabile per gli utenti mobili.
Tuttavia, supponendo che i token di sessione siano stati rubati dal server (ad esempio un attacco SQLi di sola lettura), puoi contribuire a mitigarlo in base alla progettazione. Nel database del server, memorizza solo un hash SHA-2 del token. In questo modo l'utente malintenzionato non può riconvertirlo in un valore del cookie utilizzabile. Ovviamente tali attacchi sono ancora gravi problemi per altri motivi, almeno ti sei assicurato con successo contro questo tipo di dirottamento di sessione.
Nel complesso, l'applicazione deve essere protetta contro XSS e SQLi, naturalmente.