我在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
提前致谢:)
答案 0 :(得分:1)
你知道为什么密码被哈希?这被认为是一种安全措施,如果您以明文形式保存或显示散列,散列变得毫无意义,那么您根本不必对它们进行散列。如果有人以某种方式访问数据库或数据,他们会犹豫不决,而不知道尝试解密密码会毫无意义。
即使通过电子邮件发送纯文本密码也被认为是不好的做法,因为大多数人都没有使用加密连接到他们的邮箱,如果有人访问邮箱,所有密码都只是等待攻击者。
发送代码只会在有限的时间内有效,并且只允许用户在您的网站上更改密码,不要发送纯文本密码。并使用SSL进行登录和密码相关的操作。
如果您需要告诉用户他们的密码,请为管理员实施重置方法,以便为用户触发密码重置,或允许管理员输入密码然后进行哈希处理。