A comúnmente repetido el consejo a través de la web no es almacenar los nombres de usuario en las cookies.
Sin embargo, realmente no entiendo el problema. Lo que estoy haciendo en mi aplicación web es: genero un ID de sesión aleatorio de 16 bytes (convertido a hexadecimal de 32 bits) generado desde un CSPRNG, y almaceno el nombre de usuario y este ID de sesión en las cookies.
No hace falta decir que el hecho de que la existencia del ID de sesión y su correlación con el usuario se verifica desde una base de datos antes de realizar cualquier acción en la aplicación web. Estoy haciendo esto para acelerar un poco el acceso a la base de datos, y para protegerme contra el problema de las colisiones, donde un usuario puede verse autorizado como un usuario diferente debido a una colisión accidental.
¿Cuál es la debilidad de este esquema?