L'hashing sicuro del nome utente nel database protegge la riservatezza di tali informazioni nel caso in cui il tuo database cada nelle mani di un utente malintenzionato.
Ricorda però che se usi il nome utente non cancellato in altri modi nell'applicazione, le informazioni potrebbero comunque essere ottenute da un utente malintenzionato.
Ad esempio, hai detto:
When the user logs in, the unhashed username is stored in a session.
Se supponiamo che le informazioni sulla sessione siano inviate al client come parte della normale risposta http per un utente che ha effettuato l'accesso (ad esempio come cookie), il nome utente può essere ottenuto da un utente malintenzionato se ottiene l'accesso a quel token di sessione . OWASP sconsiglia di memorizzare informazioni specifiche dell'utente nelle sessioni inviate a un cliente.
Using this unhashed username, specific user data can be obtained from
the database and the username can even be displayed on pages for
logged in users.
In questo caso il fatto che sia possibile utilizzare un nome utente non cancellato per cercare informazioni sul database implica che nel database vi siano alcune informazioni utente non hash che minano l'hashing del nome utente in primo luogo. Inoltre, se le informazioni possono essere visualizzate nelle pagine, tieni presente che, a meno che la connessione tra client e server non sia protetta al livello di trasporto (TLS), tale nome utente potrebbe essere visibile a un utente malintenzionato.