javascript - 仅使用密码对用户进行身份验证
问题描述
我需要为我正在构建的快速应用程序创建一个身份验证系统。客户要求拥有一个仅使用 4 位密码的密码系统。在创建新用户时,我有代码设置来保存和散列 pin 与其余用户信息,并且该项目只是一个内部服务器,因此它不需要处理大量用户。
我的问题是让用户重新登录。我正在使用 bycrypt 对密码进行哈希处理,但 bycrypt 会为相同的字符串生成一个全新的哈希值。
我遇到的麻烦是通过执行WHERE hash=hash
SQL 搜索来获取用户。但这是行不通的,因为即使密码相同,哈希每次都不同。
我可以获取所有用户并遍历所有用户并使用 bycrypt 的.compare
方法。但从长远来看,随着用户数量的增长,这不会奏效,并且 bycrypt 的构建是为了在 cpu 上花费很长时间来帮助防止暴力攻击。
我还可以构建自己的散列函数。但是,这样就可以了,所以我必须为每个用户存储一个盐,以使每个密码都是唯一的。那么这会带来相同的问题,即相同的字符串没有相同的哈希值。
我知道这很模糊,但我需要一些帮助来想办法通过使用散列密码获取用户来获取用户。
解决方案
只需将 PIN 存储为纯文本即可。在 4 位 PIN 上使用散列函数只会提供一种虚假的安全感。如果只有 10,000 个可能的输入,即使是故意缓慢的散列函数也很容易暴力破解。
我遇到的麻烦是通过执行
WHERE hash=hash
SQL 搜索来获取用户
您是说您甚至不知道此人声称自己是谁,而是使用 4 位密码作为声明和证明?听起来您构建的系统只是假装安全。
推荐阅读
- java - Java 过滤器不能返回布尔值
- prolog - 为什么返回false?
- excel-formula - 向上求和单元格,直到达到空白单元格
- python - 如何在 PyCharm 中移动文件类型而不是特定文件?
- reactjs - reactjs将值传递给呈现的模态
- centos - CentOS 6.9上php56w-common安装不成功
- java - Spring Cloud Stream Service-Bus Binder的错误通道
- linux - 使用 Bash shell 脚本构建包含文本和变量的 TXT 文件并通过 CURL 发送变量
- c - 我该如何处理段错误?C语言
- github - 我已经安装了所有的先决条件——python3(3.8.2)、pip3、php、wget。仍然无法启动 HiddenEye.py。面临以下问题