我正在开发一个需要连接到远程数据库进行身份验证的CakePHP应用程序。密码以MD5加密方式存储,当我编写应用程序时,我对本地主机数据库使用sha加密,现在应用程序不允许我登录,因为架构不同。如何强制cakePHP使用MD5对用户进行身份验证?
答案 0 :(得分:2)
摘自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');
}
?>
将明文值与哈希值进行比较时,您必须将原始哈希值作为salt值传递,以便保留成本参数等:
$newHash = Security::hash($newPassword, 'blowfish', $storedPassword);