验证用户登录时,首先搜索用户名,然后如果找到,检索散列密码和盐并将其与用户输入进行比较是否安全?
或者,是否应该自行检索用户输入的用户名的盐,然后与输入的密码进行哈希处理,并与数据库中的最终哈希值进行比较?
本质上,在知道用户输入的密码是否有效之前,从数据库存储输入的用户名的密码是否安全?
最佳答案
如果您查看 PHP 密码哈希 API 的示例 https://github.com/ircmaxell/password_compat答案是:不,您从数据库中读取用户并将存储的密码哈希与您刚刚从登录表单中获取的密码进行比较。
请尝试使用这个库 - PHP 5.5 将原生支持这些函数,如果您使用的是 PHP 5.3.7 及更高版本,那么不要重新发明轮子而简单地使用这些函数,这听起来是一个非常好的主意。做自己的事情更有可能受到攻击。
关于php - 使用 PHP 检查 mysql 数据库中的用户名和散列/加盐密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14223170/