Entonces, mientras estaba trabajando en mi proyecto personal, algo me golpeó.
Cuando alguien crea una cuenta en cualquier servicio web / red social, proporciona su nombre de usuario y contraseña deseados, el servidor los procesa, el nombre de usuario se almacena en un BD y la contraseña se cifra y luego se almacena, pero eso significa que la contraseña recibe la contraseña en texto sin formato y luego aplica un algoritmo antes de almacenar.
Lo mismo sucede cuando alguien inicia sesión, ¿verdad? Por supuesto, esto puede enviarse a través de SSL / HTTPS, pero el servidor aún presenta el texto en claro que representa la contraseña, la codifica y la compara con la contraseña de hash almacenada.
¿Por qué no se hace este proceso del lado del cliente? Sería bastante sencillo para el cliente codificar su contraseña dentro del navegador usando JS. Estoy seguro de que tiene que haber alguna biblioteca dedicada a la mezcla con algoritmos populares como SHA-256.
Tal vez estoy ignorando algo realmente obvio o tal vez no entiendo algo, así que estoy abierto a la corrección.