用户注册时的客户端或服务器端密码散列(使用 HTTP)

Client or Server side password hashing when a user registers (using HTTP)

我有一个可以同时使用 HTTP 和 HTTPS 的 Web 应用程序(取决于用户的选择)。当用户注册时,他们的密码应该在客户端进行哈希处理然后传递给服务器,还是应该将纯文本传递给服务器然后进行哈希处理。

我相信如果使用 HTTP,数据包嗅探工具可以用来捕获密码,那么在客户端散列它会更好吗?

在客户端散列会不会更好?

不,不要在客户端散列 username/password,这没有任何意义。

如果 Web 应用程序使用 HTTPS,则注册请求已加密,这意味着散列密码是多余的。

如果网络应用程序使用HTTP,那么在网络中嗅探的每个人都可以看到这个网络应用程序的所有HTTP数据包,这意味着:

  1. 此 Web 应用程序的所有客户端文件都是 public,包括哈希算法和密钥(如果有)。借助哈希算法和哈希密码,嗅探器可以轻松破解原始密码。
  2. 即使嗅探器未能获取哈希算法,或未能破解原始密码,he/she 也可以使用哈希密码到 "login" 您的 Web 应用程序并执行任何操作 he/she 想要。

总而言之,一旦 Web 应用程序使用 HTTP,就没有什么是安全的。