Utilizza TLS per la connessione al server.
Lo scopo dell'hashing sicuro di una password è rendere più difficile l'attacco se il database viene mai rubato. Non è progettato per evitare di annusare la password in chiaro. Per comunicare in modo sicuro con il server su un supporto ostile, dovresti utilizzare TLS. Ciò impedirà l'intercettazione sul cavo, mentre il PBKDF2 lato server impedirà che la password venga recuperata banalmente dal contenuto di un database rubato.
Potresti essere tentato di aggiungere un hash al lato client. Sfortunatamente, ciò non impedisce a un utente malintenzionato di registrare l'hash inviato dal client e di utilizzarlo per accedere in seguito. TLS fornisce protezione per un numero elevato di modelli di minacce e prende esplicitamente in considerazione questo problema. Impedirà a un utente malintenzionato di riprodurre semplicemente le credenziali che si stanno utilizzando. L'unico scenario in cui l'hashing sul lato client sarebbe vantaggioso è se il server è ostile ma il server non ha alcun controllo sul codice che esegue il client, o se il server è troppo basso per eseguire un KDF lento corretto e alcune elaborazioni pesanti deve essere scaricato sul client. Ad ogni modo, dovresti usare TLS.