【发布时间】:2011-04-12 13:40:00
【问题描述】:
当我想建立一个登录系统时,我总是将给定密码的 MD5 与其在服务器端用户表中的值进行比较。
但是,我的一个朋友告诉我,“明文”密码可能会被网络软件嗅探。
所以我的问题是:在客户端散列密码是个好主意吗?比在服务器端散列更好吗?
【问题讨论】:
-
我正在考虑在客户端对密码进行哈希处理,但只是为了让我可以放心,客户端的密码永远不会以明文形式存在于服务器端,这意味着知道我不这样做他们会感觉更轻松不知道他们的实际密码,或者如果被泄露也不能轻易放弃。我疯了吗?
-
为了完整起见,因为我们正在谈论安全性,并且 OP 中提到了 MD5:One should always use a salt when encrypting a password. 使用纯的、未加盐的 MD5 比在数据库中存储纯文本密码略好。跨度>
-
@Cyclone 仅在客户端散列绝对是一个坏主意,因为如果攻击者以某种方式知道散列,他可以使用它来登录,就好像他知道密码一样,绕过客户端散列代码。
-
@Teejay:这就是为什么您不以明文形式发送散列。服务器向客户端发送一个随机盐,您附加密码哈希,然后再次对整个内容进行哈希处理,然后将其发送回执行相同计算的服务器。重放攻击失败,因为盐会不同
-
这个问题不应该在 security.stackexchange.com 上结束吗?
标签: passwords client-side hash