Php 使用不同散列的正确身份验证方法?

Php 使用不同散列的正确身份验证方法?,php,Php,我使用库执行用户身份验证,使用bcrypt作为算法 因为我现在每次都创建不同的散列,所以无法将数据库中的散列与sqlWHERE password=:hash 现在我的sql语句如下:选择username,password FROM username=:username,然后是password\u verify()方法 现在我的大问题是,只使用给定的用户名获取密码散列是否安全 我想我是担心过度了,对吧?是的,你是担心过度了。无论哪种方式,哈希都在数据库服务器和应用程序服务器之间传递,并存储在内存中

我使用库执行用户身份验证,使用bcrypt作为算法

因为我现在每次都创建不同的散列,所以无法将数据库中的散列与sql
WHERE password=:hash

现在我的sql语句如下:
选择username,password FROM username=:username
,然后是
password\u verify()
方法

现在我的大问题是,只使用给定的用户名获取密码散列是否安全


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

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

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


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

感谢您提供的排序提示!我还没想到。