Usar Https es la respuesta correcta.
Agregaré una aclaración sobre la importancia de calcular un hash en el lado del servidor. El hash es una función unidireccional que transforma la entrada en el valor clave almacenado en el servidor. Si alguien piratea el servidor y obtiene la entrada hash (valor clave), no podrá deducir el valor de entrada para suplantarlo.
Si calcula el valor de la clave en el lado del cliente y no se realiza ninguna transformación en el servidor, es equivalente a almacenar las contraseñas en texto sin cifrar. Alguien que logró obtener una copia del valor clave almacenado en el servidor puede suplantarlo fácilmente simplemente enviando el valor clave.
Por lo tanto, para proteger la base de datos de contraseñas se requiere una función de una vía criptográficamente segura (por ejemplo, shasha256) con una semilla sal/aleatoria en la contraseña enviada.
Ofuscar la contraseña enviada al hash, además de hash en el lado del servidor, no ayudará a silenciar si el valor hash enviado es siempre el mismo. Sin embargo, espiar los datos enviados a través de una conexión SSL no es trivial.
Sin embargo, hay un beneficio significativo para la contraseña hash en el lado del cliente. Un ataque de fuerza bruta en el servidor tratando de adivinar la contraseña usando un diccionario de contraseñas común sería inútil porque el hashing en el lado del cliente aleatorizó la contraseña.
Podemos agregar algo de sal al hash para evitar el uso del diccionario de contraseñas hash. Cuando el usuario escribió su identificación de usuario, solicite el valor de sal específico del usuario al servidor. A continuación, utilice el valor devuelto sal o semilla de hash para generar la contraseña hash en el lado del cliente.
La adivinación de contraseñas de fuerza bruta puede verse obstaculizada en el lado del servidor al aumentar el intervalo de tiempo entre reintentos. Pero esto generalmente funciona para una conexión específica. El atacante puede volver a conectarse después de cada dos intentos. Luego se requiere realizar un seguimiento de las direcciones IP para reconocer ese tipo de ataques.
Gracias, me dedico a usar HTTPS y para pequeñas aplicaciones donde la seguridad no es un gran problema Supongo que administrar mis administradores de base de datos y mis lectores (lectores) para que nunca se usen las credenciales de administración del servidor es una buena solución ? – Arnaud