【发布时间】:2021-04-17 15:51:22
【问题描述】:
我最近阅读了很多关于安全性的内容,有些事情让我很困扰。 我正在使用 Node.JS,我想将用户数据存储在数据库中。我目前在服务器上散列密码,然后将其保存到数据库。但是当用户向服务器发送数据时,他只发送纯文本。我认为这是错误的做法。顺便说一句,我正在使用 Bcrypt。
我想使用的方法是:当用户需要登录时,我在客户端对密码进行哈希处理,然后将带有盐的哈希密码发送到服务器。然后服务器再次对密码进行哈希处理,并将结果与用户传递的第一个盐一起存储在数据库中。这意味着我有serverHash(userHash(userPassword)) 和userSalt。
当用户登录后,我想从数据库中获取userSalt 并使用该盐对他的userPassword 进行哈希处理。然后我将userHash(userPassword) 发送到服务器,然后比较userHash(userPassword) 和serverHash(userHash(userPassword))。
这种方法是否良好且安全,或者有更好的方法来做到这一点,我可以使用一些第三方库还是可以摆脱这种方法?
编辑: 如果有人碰到这个,不要这样做,TLS 可能会完成这项工作,如果没有证书可以帮助我认为,我不是 100% 确定,但不要相信我的话。
【问题讨论】:
标签: node.js database security authentication hash