Use TLS para la conexión con el servidor.
El propósito de hashear de forma segura una contraseña es hacer que sea más difícil atacar si alguna vez se roba la base de datos. No está diseñado para evitar la detección de la contraseña de texto sin formato. Para poder comunicarse de forma segura con el servidor a través de un medio hostil, debe utilizar TLS. Esto evitará la intercepción en el cable, mientras que el PBKDF2 del lado del servidor evitará que la contraseña se recupere de forma trivial del contenido de una base de datos robada.
Es posible que tengas la tentación de hacer un hash adicional en el lado del cliente. Desafortunadamente, eso no evitaría que un atacante registre el hash enviado desde el cliente y lo use para iniciar sesión más tarde. TLS proporciona protección para una gran cantidad de modelos de amenazas y tiene en cuenta explícitamente este problema. Evitará que un atacante simplemente reproduzca cualquier credencial que esté utilizando. El único escenario en el que el hashing del lado del cliente sería beneficioso es si el servidor es hostil pero el servidor no tiene control sobre el código que ejecuta el cliente, o si el servidor tiene una potencia demasiado baja como para realizar un KDF lento adecuado y un procesamiento pesado Debe ser descargado al cliente. De cualquier manera, debes usar TLS.