1
我正在研究需要连接到远程数据库进行身份验证的CakePHP应用程序。密码与MD5加密存储在一起,当我编写应用程序时,我对我的本地主机数据库使用了sha加密,现在应用程序不允许我登录,因为架构不同。我如何强制cakePHP使用MD5验证用户?CakePHP - 使用MD5进行身份验证
我正在研究需要连接到远程数据库进行身份验证的CakePHP应用程序。密码与MD5加密存储在一起,当我编写应用程序时,我对我的本地主机数据库使用了sha加密,现在应用程序不允许我登录,因为架构不同。我如何强制cakePHP使用MD5验证用户?CakePHP - 使用MD5进行身份验证
参考从here
采取我不建议使用这种代码,在任何情况下,永远。 MD5对于安全性来说是一种可怕的哈希算法,因为它的资源太轻而不能防止破解。它也有已知的漏洞。使用bcrypt或SHA-512。
要做到这一点,您可以编辑AppController.php
这样的:
<?php
// AppController.php
public function beforeFilter()
{
Security::setHash('md5');
}
?>
然而,这不推荐MD5是一个非常糟糕的口令散列算法。添加一个函数允许用户使用现有的md5
密码进行登录,鼓励他们升级到新的散列,并且不允许任何新用户设置MD5密码。
相反如果你想使用一个安全的功能像bcrypt
,你可以做到以下几点:
<?php
// AppController.php
public function beforeFilter()
{
Security::setHash('blowfish');
}
?>
当比较明文值的散列,您必须将原来的哈希值传递作为以盐值保留成本参数等:
$newHash = Security::hash($newPassword, 'blowfish', $storedPassword);
它绝对需要在MD5中吗?它被认为是密码破解的http://en.wikipedia.org/wiki/MD5 – Nunser
你也可以使用纯文本。 – Mihai
我知道MD5并不推荐,但是旧系统在2年前就已经实现了...现在我需要应付它,直到我改变了从MD5哈希算起的一切...... –