使用不同哈希的正确身份验证方法?

时间:2013-03-23 20:41:50

标签: php

我正在使用password_compat库来执行用户身份验证,以bcrypt作为算法。

因为我现在每次都创建不同的哈希值,所以我无法直接将数据库中的哈希值与sql WHERE password = :hash进行比较

所以现在我的sql语句如下:SELECT username, password FROM Users WHERE username = :username,后跟password_verify()方法。

现在我的一个大问题是,只使用给定的用户名获取密码哈希是否安全?

我想我过度担心了,对吧?

2 个答案:

答案 0 :(得分:2)

是的,你过度担心了。哈希在数据库服务器和应用程序服务器之间传递,并存储在内存中的某些位置。在第一个例子中,哈希在应用程序端生成并传输到数据库,第二个哈希被查询并返回。

答案 1 :(得分:0)

只要数据库中的用户名是 unique ,当然。您需要确保不会成为任何整理逻辑的牺牲品,例如:您的用户名是“grég”,但在数据库中与“greg”匹配。为此,要么限制用户名可能包含的字符和/或在列上使用_bin归类。

除此之外,只要您正确处理下一步,即PHP代码中的密码比较,就不会有任何改变。