【发布时间】:2014-08-07 20:39:09
【问题描述】:
我正在用 cakePHP 编写这段代码,并且我已经让身份验证工作得很好。问题是,当我显示用户信息时,显示的密码是散列密码,这是没用的。有没有办法恢复河豚散列器所做的散列,以便我可以看到实际密码?
我正在使用 cakePHP 2.5,我在保存之前对密码进行哈希处理的函数在我的模型中如下所示:
public function beforeSave($options = array()) {
if (isset($this->data[$this->alias]['password'])) {
$passwordHasher = new BlowfishPasswordHasher();
$this->data[$this->alias]['password'] = $passwordHasher->hash(
$this->data[$this->alias]['password']
);
}
return true;
}
这是我在用户/索引视图中得到的示例:
Id 5
Name javier
Password $2a$10$Awk8LMePPqiEPpavKk6xrulZKrbhNy5NVfkQSDF1E.PmgFtwYy60u
提前致谢:)
【问题讨论】:
-
那么,为什么不在将密码传递给模型和 beforeSave() 之前获取密码呢?之前,它不会被修改/散列。
-
如果您在对密码进行哈希处理时需要将其显示给用户,请在对其进行哈希处理并使用之前将其设置为视图变量。散列后,没有理由需要向用户显示他们的密码,这是正确的 - 永远不会。如果您相信自己这样做,则需要重新考虑安全系统的工作方式。一旦密码被散列,它应该永远保持这种状态。
-
Scowler 是对的,如果你展示它,SSL 就被打败了。它的目的是因为它是一种单向加密方案,现在已经公开了一个纯文本密码。 Plus 散列用于身份验证,而不是加密,因此没有理由找出纯文本版本。
-
是的,对不起,我很愚蠢,感谢您的回答,我所要做的就是实施重置密码选项。
标签: php cakephp hash passwords blowfish