2013-03-23 40 views
0

我使用password_compat库来执行用户认证,并使用bcrypt作为算法。 SELECT username, password FROM Users WHERE username = :username,其次是password_verify()方法:使用不同哈希的正确验证方式?

因为我现在创建不同的哈希值每一次,我不能哈希直接在我的数据库与SQL WHERE password = :hash

所以现在我的SQL语句如下比较。

现在我的一个大问题是,只有给定的用户名才能安全地获取密码哈希值?

我想我过分担心了吧?

回答

2

是的,你已经结束了。无论哪种方式,数据库服务器和应用程序服务器之间都要传递散列,并将其存储在内存中的某处。第一个例子是散列在应用程序端生成并传输到数据库,第二个散列被查询并返回。

+0

感谢您清除我的担忧! – jlmmns 2013-03-23 20:57:18

0

只要数据库中的用户名是唯一,当然可以。您将希望确保您不会陷入任何归类逻辑,例如你的用户名是“grég”,但在数据库中被“greg”匹配。为此,可以限制用户名可能包含的字符和/或在列上使用_bin排序规则。

除此之外,只要您正确处理下一步(PHP代码中的密码比较),没有任何更改。

+0

感谢您收集提示!还没有想到这一点。 – jlmmns 2013-03-23 21:03:45