这种技术足够安全吗?我能相信这样的治疗吗?还是我该补充点什么?
身份验证模块
class Auth {
public function login($user, $pass, $random_unique_salt)
{
if ($this->_bcrypt($pass, $random_unique_salt) === 'correct password hash') // etc.
{
// Success...
$session = Session::instance();
$session->set('login', TRUE);
$session->regenerate();
}
}
}
基础控制器
class Controller_Base extends Controller {
protected $_login = FALSE;
public function before()
{
$this->_login = Session::instance()->get('login', FALSE);
}
}
仅限成员-controller
class Controller_Membersonly extends Controller_Base {
public function action_index()
{
if ($this->_login === TRUE)
{
// Success...
echo 'Show (safely?) some secrets.';
}
}
}
我看到的唯一漏洞是CWE-706 -使用一种方式有一个可预测的盐。每个密码都需要有自己独特的盐。bcrypt并不是一个糟糕的密码散列方法,因为它不能在GPU或FPGA上有效地实现。
代码风格有点偏执,不是一件坏事。你的比较运算符有点过了。确保你阅读了php中的模糊输入,这样你以后就不会犯错误了。
这种技术是足够安全的。我可以信任这样的会话