chr*_*ick 0 php authentication passwords cakephp
好的,所以我通过将我的应用程序(2.5)转移到3.x来测试Cakephp 3.0 alpha2.我当前的应用程序已将其设置为当您重置密码时,为了安全起见,您无法将其更改为以前的六个密码中的任何一个(存储在通过user_id连接密码表的密码表中).当我看到Cake 3.0中的更改时,我注意到如果您创建一个新实体,即使密码相同,密码也会有不同的哈希值.将新密码与旧密码进行比较的好方法是什么?我是否会使用密码hasher内置函数调用check?
CakePHP 3使用bcrypt.简而言之:bcrypt为每个密码使用不同的salt,并将salt存储为密码哈希的一部分.这就是为什么,正如您所发现的,每次加密相同的纯文本密码时,bcrypt都会生成不同的哈希值.
但是,如果要将其用作身份验证系统,则必须能够检查纯文本密码是否适合该密码的给定哈希版本 - 即使没有一个'正确'的哈希版本, 对?对.
您可以使用password_verify方法 - http://au2.php.net/password_verify执行此操作
因此,不是对纯文本版本进行散列,而是查看新密码的散列版本是否与过去6个版本中每个版本的散列版本匹配,您必须调用password_verify纯文本密码6次 - 每次调用一次以前的哈希密码,以查看是否有任何匹配.
这里有关于bcrypt的一个很好的解释:你如何在PHP中使用bcrypt进行散列密码?我建议您阅读 - 一旦您了解了bcrypt如何处理密码,您的问题就不应该太难解决.
| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |