在将用户密码发送到Web服务器之前,在客户端浏览器上散列用户密码的最佳方法是什么,这样只有哈希值才会出现,而不是纯文本密码?
编辑:假设使用HTTP(非HTTPS)
答案 0 :(得分:4)
使用javascript计算哈希值。有关如何在JS中计算SHA-1哈希值的示例,请参阅this。
请注意,如果您自己依赖于Javascript,那么只要有人禁用了JS,您的系统就会失败。如果这是您关心的问题,您应该使用HTTPS,它有自己的挫折(例如,如果您希望浏览器立即接受证书,则证书需要花钱。)
答案 1 :(得分:2)
尝试使用此jQuery encryption plugin。出于好奇,在服务器端使用SSL / HTTPS和加密有什么问题?
答案 2 :(得分:1)
并非所有人都在浏览器中启用了JavaScript,甚至在纯文本频道上发送哈希的想法我觉得还不够安全。
我建议您考虑SSL安全连接。
答案 3 :(得分:1)
此网站有相当全面的哈希/加密内容:JavaScript Encryption Library
答案 4 :(得分:1)
像jQuery Encryption库这样的JavaScript端加密会阻止Eavesdroppers。但是,MITM(Man-in-the-Middle)仍然可以发生。 SSL / TLS是强烈建议采用的最终选择,除非您在共享主机(没有专用IP)或您的站点正在接收如此多的流量,您不能简单地加密所有连接(JS,CSS,HTML,.. )。
答案 5 :(得分:1)
你为什么要这么做呢?实际上,密码哈希已成为密码,并且拦截哈希的中间人可以使用它来验证和执行作为用户的任何操作。另一方面,如果你不相信中间人,为什么不直接发送密码呢?
答案 6 :(得分:1)
为什么要哈希密码?因此,如果获得哈希值,则难以使用。
如果系统中的哈希值暴露,该模型会发生什么?攻击者只需将它们发送到服务器并以用户身份进行身份验证。
这就是密码哈希总是在服务器上发生的原因,而不是客户端!