Al almacenar un hash inactivo de la contraseña y luego utilizar este mismo hash como token de autenticación, una aplicación es más vulnerable a los ataques porque esta aplicación ahora está almacenando las credenciales de autenticación en texto sin formato. Un atacante puede usar la inyección SQL para leer este hash y luego autenticarse sin tener que descifrar el hash para obtener la contraseña de texto simple.
La entrada del wiki de OWASP que se hizo referencia en esta pregunta fue engañosa y se eliminó:
Aquí es cómo funciona la técnica MD5 con sal: la base de datos almacena un MD5
hash de la contraseña. (El hash MD5 es una técnica criptográfica en la que
el valor real nunca se puede recuperar.) Cuando un cliente solicita
La página de inicio de sesión, el servidor genera un número aleatorio, el salt y
Se lo envía al cliente junto con la página. Un código JavaScript en el
el cliente calcula el hash MD5 de la contraseña introducida por el usuario. Eso
luego concatena la sal al hash y vuelve a calcular el hash MD5.
Este resultado se envía al servidor. El servidor recoge el hash de
la contraseña de su base de datos, concatena la sal y calcula la
MD5 hash. Si el usuario ingresó la contraseña correcta estos dos hashes
debe coincidir. El servidor compara los dos y si coinciden, el usuario
es autenticado.
MD5 no es apropiado para las contraseñas. Esta es una primitiva rota y una violación de CWE-916 . Incluso si esto describía una respuesta de desafío segura, HTTPS es una herramienta más apropiada y se requiere para proteger el ID de sesión.