0

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

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

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

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

估计是我多虑了吧?

4

2 回答 2

2

是的,你太担心了。无论哪种方式,哈希都在数据库服务器和应用程序服务器之间传递,并存储在内存中的某个位置。在第一个示例中,哈希在应用程序端生成并传输到数据库,在第二个示例中,哈希被查询并返回。

于 2013-03-23T20:52:45.400 回答
0

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

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

于 2013-03-23T21:00:21.507 回答