Memorizzando un hash della password e utilizzando lo stesso hash di un token di autenticazione, un'applicazione è più vulnerabile agli attacchi perché questa applicazione sta ora memorizzando le credenziali di autenticazione in testo semplice. Un utente malintenzionato può utilizzare SQL Injection per leggere questo hash e quindi eseguire l'autenticazione senza dover decifrare l'hash per ottenere la password in chiaro.
La voce del wiki OWASP con riferimento a questa domanda era fuorviante ed è stata rimossa:
Here is how the salted MD5 technique works: the database stores a MD5
hash of the password. (MD5 hash is a cryptographic technique in which
the actual value can never be recovered.) When a client requests for
the login page, the server generates a random number, the salt, and
sends it to the client along with the page. A JavaScript code on the
client computes the MD5 hash of the password entered by the user. It
then concatenates the salt to the hash and re-computes the MD5 hash.
This result is then sent to the server. The server picks the hash of
the password from its database, concatenates the salt and computes the
MD5 hash. If the user entered the correct password these two hashes
should match. The server compares the two and if they match, the user
is authenticated.
MD5 non è appropriato per le password. Questa è una primitiva rotta e una violazione di CWE-916 . Anche se si trattava di una risposta alla sfida sicura, HTTPS è uno strumento più appropriato ed è necessario per proteggere l'ID della sessione.