用户注册时的客户端或服务器端密码散列(使用 HTTP)
Client or Server side password hashing when a user registers (using HTTP)
我有一个可以同时使用 HTTP 和 HTTPS 的 Web 应用程序(取决于用户的选择)。当用户注册时,他们的密码应该在客户端进行哈希处理然后传递给服务器,还是应该将纯文本传递给服务器然后进行哈希处理。
我相信如果使用 HTTP,数据包嗅探工具可以用来捕获密码,那么在客户端散列它会更好吗?
在客户端散列会不会更好?
不,不要在客户端散列 username/password,这没有任何意义。
如果 Web 应用程序使用 HTTPS,则注册请求已加密,这意味着散列密码是多余的。
如果网络应用程序使用HTTP,那么在网络中嗅探的每个人都可以看到这个网络应用程序的所有HTTP数据包,这意味着:
- 此 Web 应用程序的所有客户端文件都是 public,包括哈希算法和密钥(如果有)。借助哈希算法和哈希密码,嗅探器可以轻松破解原始密码。
- 即使嗅探器未能获取哈希算法,或未能破解原始密码,he/she 也可以使用哈希密码到 "login" 您的 Web 应用程序并执行任何操作 he/she 想要。
总而言之,一旦 Web 应用程序使用 HTTP,就没有什么是安全的。
我有一个可以同时使用 HTTP 和 HTTPS 的 Web 应用程序(取决于用户的选择)。当用户注册时,他们的密码应该在客户端进行哈希处理然后传递给服务器,还是应该将纯文本传递给服务器然后进行哈希处理。
我相信如果使用 HTTP,数据包嗅探工具可以用来捕获密码,那么在客户端散列它会更好吗?
在客户端散列会不会更好?
不,不要在客户端散列 username/password,这没有任何意义。
如果 Web 应用程序使用 HTTPS,则注册请求已加密,这意味着散列密码是多余的。
如果网络应用程序使用HTTP,那么在网络中嗅探的每个人都可以看到这个网络应用程序的所有HTTP数据包,这意味着:
- 此 Web 应用程序的所有客户端文件都是 public,包括哈希算法和密钥(如果有)。借助哈希算法和哈希密码,嗅探器可以轻松破解原始密码。
- 即使嗅探器未能获取哈希算法,或未能破解原始密码,he/she 也可以使用哈希密码到 "login" 您的 Web 应用程序并执行任何操作 he/she 想要。
总而言之,一旦 Web 应用程序使用 HTTP,就没有什么是安全的。