【发布时间】:2022-03-15 20:18:44
【问题描述】:
在 PHP 中,我一直认为使用诸如“password_verify”之类的专用密码函数是最好的方法。但是,我目前在一个网站上工作,最初的开发人员基本上编写了一个查询,通过搜索用户名和密码哈希返回 userId。如果有结果,则用户已登录。
有人可以帮我解释一下为什么后者是个坏主意吗?我了解加密功能在防止定时攻击方面很慢。另一方面,在我看来,通过用户名和密码哈希查询会更安全,因为查询时间会与用户无效一样结束。
【问题讨论】:
-
您应该无法根据用户提交的密码尝试搜索密码哈希。好的加密是“单向的”。忽略其他开发人员并编写正确的代码。
-
基本原则:不要在系统中存储普通密码或可解密密码。因此,单向加密是首选方法。想象一下,当您的系统被黑客入侵并且密码被泄露给黑客时......
-
为了澄清,存储的密码仍然是散列的。因此代码对用户输入进行哈希处理,然后使用该哈希进行查询。
标签: php security hash cryptography passwords