Non sarebbe meglio memorizzare l'id utente invece dell'ID di sessione in modo tale da cercare il database una sola volta per estrarre le informazioni di altri utenti invece di estrarre due volte l'ID utente dalla sessione db e poi l'utente db?
Sarebbe una pessima idea perché un utente malintenzionato potrebbe cambiare l'id che sta inviando.
Se ad esempio l'amministratore ha l'id 1
, e un utente l'id 101
, quell'utente potrebbe semplicemente cambiare il proprio id nel cookie in 1
, e quindi ottenere i privilegi di amministratore.
Per lo stesso motivo, non vorrai inviare altri dati rilevanti nei cookie, dato che non puoi fidarti di questi dati (a meno che non siano firmati e quindi non possano essere modificati, ad esempio utilizzando jwt).
Potresti naturalmente generare ID utente casuali. Ma anche supponendo che questi siano inconcepibili, ciò sarebbe problematico. Sarebbe essenzialmente lo stesso come se si stesse inviando la password in un cookie. Se un ID perde anche una volta, un utente malintenzionato otterrebbe l'accesso permanente in quanto è inarrivabile. D'altra parte, gli ID di sessione scadono dopo un po 'o possono essere revocati.
L'ID utente è un valore costante nel database che non è quello che desideri per gestire i token di sessione nei cookie, poiché l'ID di sessione deve cambiare frequentemente.
Come ha detto @AndrolGenhald, l'ID utente in un database sarà probabilmente facile da prevedere in quanto probabilmente sarà un numero che si incrementerà semplicemente con i nuovi utenti. D'altra parte, un ID di sessione avrà un'alta entropia tale che è molto difficile indovinare il valore di un ID di sessione.
Leggi altre domande sui tag authentication cookies web-application session-management