X 经,关于用户验证

2014-05-08 11:18:52 +08:00
 un
如果服务器端用了 bcrypt 保存密码,客户端登录要怎么做?没有 SSL 证书的情况。
2772 次点击
所在节点    程序员
6 条回复
SkyFvcker
2014-05-08 13:00:06 +08:00
没有SSL比较好的方法是,服务器生成随机数r发给客户端,客户端计算hash(r+bcrypt(密码)+时间),然后服务器再验证hash(r+服务端保存的值+时间)是否等于发来的值。
rankjie
2014-05-08 13:07:50 +08:00
@SkyFvcker
好复杂的方法,似乎可用于客户端hash算法不会被恶意替换的情况(例如CS架构)。但如果是BS架构,hash算法应该就是js写的,没有ssl的情况什么都能给你替换了,hash返回明文,再截取了照样白瞎…
rankjie
2014-05-08 13:11:46 +08:00
@SkyFvcker 再想了下,这个 bcrypt(密码) 生成的 hash 每次都是不同的吧? 如果把这个 hash 当作明文再 hash 一次,最终的 hash 怎么可能能匹配上啊...?
oott123
2014-05-08 13:40:01 +08:00
上个 ssl 吧…
不然就只有明文了,浏览器和数据库总有一个不能加盐,除非你愿意共享盐…
un
2014-05-08 14:28:06 +08:00
客户端是浏览器。浏览器端js hash掉,被抓包的话确实 hash 的意义都没了。真想安全看来只能 SSL 了。
9hills
2014-05-08 16:33:51 +08:00
@rankjie 没有SSL你考虑什么安全性。。能用就行啦,什么都会被破

bcrypt(密码) 生成的 hash 每次当然是一样的,要不怎么能验证呢。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/111604

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX