我已经用节点构建了一个Rest API。查看身份验证路由,我有使用bcrypt存储哈希值的密码。
现在当用户登录时,我可以对密码客户端进行哈希处理,然后将其发送给API,但是到目前为止我无法比较2个哈希值。那么这是否意味着唯一安全的选择是通过HTTPS将其作为纯文本发送?
我已经看到它在这里得到了解答Client side password hash versus plain text但是普遍的共识是纯文本通过https是唯一重要的方式。
感谢。
答案 0 :(得分:2)
无论您是计算客户端还是服务器端,都绝对必须使用HTTPS。因此,如果您的目标是删除HTTPS并使用HTTP:不要这样做 - 它打开了“传递哈希”攻击的大门。
将bcrypt计算移动到客户端有很好的论据,但是你必须担心要正确地做一些陷阱。有关参考,请参阅Method to Protect Passwords in Databases for Web Applications和Client-Plus-Server Password Hashing as a Potential Way to Improve Security Against Brute Force Attacks without Overloading the Server。两种不同的解决方案基于类似的想法和观察。