Php 使用不同散列的正确身份验证方法?
我使用库执行用户身份验证,使用bcrypt作为算法 因为我现在每次都创建不同的散列,所以无法将数据库中的散列与sqlPhp 使用不同散列的正确身份验证方法?,php,Php,我使用库执行用户身份验证,使用bcrypt作为算法 因为我现在每次都创建不同的散列,所以无法将数据库中的散列与sqlWHERE password=:hash 现在我的sql语句如下:选择username,password FROM username=:username,然后是password\u verify()方法 现在我的大问题是,只使用给定的用户名获取密码散列是否安全 我想我是担心过度了,对吧?是的,你是担心过度了。无论哪种方式,哈希都在数据库服务器和应用程序服务器之间传递,并存储在内存中
WHERE password=:hash
现在我的sql语句如下:选择username,password FROM username=:username
,然后是password\u verify()
方法
现在我的大问题是,只使用给定的用户名获取密码散列是否安全
我想我是担心过度了,对吧?是的,你是担心过度了。无论哪种方式,哈希都在数据库服务器和应用程序服务器之间传递,并存储在内存中的某个位置。在第一个示例中,哈希在应用程序端生成并传输到数据库,在第二个示例中,哈希被查询并返回。只要用户名在数据库中是唯一的,就可以。您将希望确保您不会成为任何排序逻辑的牺牲品,例如,您的用户名为“grég”,但在数据库中与“greg”匹配。为此,请限制用户名可能包含的字符和/或在列上使用
\u bin
排序规则
除此之外,只要正确处理下一步,即PHP代码中的密码比较,就不会发生任何更改。感谢您提供的排序提示!我还没想到。