2014-04-30 146 views
1

我正在研究需要连接到远程数据库进行身份验证的CakePHP应用程序。密码与MD5加密存储在一起,当我编写应用程序时,我对我的本地主机数据库使用了sha加密,现在应用程序不允许我登录,因为架构不同。我如何强制cakePHP使用MD5验证用户?CakePHP - 使用MD5进行身份验证

+3

它绝对需要在MD5中吗?它被认为是密码破解的http://en.wikipedia.org/wiki/MD5 – Nunser

+3

你也可以使用纯文本。 – Mihai

+0

我知道MD5并不推荐,但是旧系统在2年前就已经实现了...现在我需要应付它,直到我改变了从MD5哈希算起的一切...... –

回答

1

参考从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);