I am looking for best practice for username/password login. People have different views for client side hashing on password.
From Google's recommendation https://cloud.google.com/solutions/modern-password-security-for-system-designers.pdf
The client side hashing should be implemented as below:
Have the client computer hash the password using a cryptographically secure algorithm and a unique salt provided by the server. When the password is received by the server, hash it again with a different salt that is unknown to the client. Be sure to store both salts securely.
My questions are
I agree the server should send a (unique) salt to the client. But why does the server need to hash the client result again with another salt?
Does the above mechanism suggest the server should store both salts as separate columns in the database table? And assume both salts are static (not changed per each login?)
SSL/TLS have mechanism to avoid replay attack. Does the above mechanism provide extra value to counter replay attack? I don't see any random factor about the static salts and I cannot relate anything can address replay attack.