我正在使用password_compat库来执行用户身份验证,以bcrypt作为算法。
因为我现在每次都创建不同的哈希值,所以我无法直接将数据库中的哈希值与sql WHERE password = :hash
进行比较
所以现在我的sql语句如下:SELECT username, password FROM Users WHERE username = :username
,后跟password_verify()
方法。
现在我的一个大问题是,只使用给定的用户名获取密码哈希是否安全?
我想我过度担心了,对吧?
答案 0 :(得分:2)
答案 1 :(得分:0)
只要数据库中的用户名是 unique ,当然。您需要确保不会成为任何整理逻辑的牺牲品,例如:您的用户名是“grég”,但在数据库中与“greg”匹配。为此,要么限制用户名可能包含的字符和/或在列上使用_bin
归类。
除此之外,只要您正确处理下一步,即PHP代码中的密码比较,就不会有任何改变。