在散列之前显示密码

时间:2014-08-07 20:39:09

标签: php cakephp hash passwords blowfish

我在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   

提前致谢:)

1 个答案:

答案 0 :(得分:1)

你知道为什么密码被哈希?这被认为是一种安全措施,如果您以明文形式保存或显示散列,散列变得毫无意义,那么您根本不必对它们进行散列。如果有人以某种方式访问​​数据库或数据,他们会犹豫不决,而不知道尝试解密密码会毫无意义。

即使通过电子邮件发送纯文本密码也被认为是不好的做法,因为大多数人都没有使用加密连接到他们的邮箱,如果有人访问邮箱,所有密码都只是等待攻击者。

发送代码只会在有限的时间内有效,并且只允许用户在您的网站上更改密码,不要发送纯文本密码。并使用SSL进行登录和密码相关的操作。

如果您需要告诉用户他们的密码,请为管理员实施重置方法,以便为用户触发密码重置,或允许管理员输入密码然后进行哈希处理。