这个认证/登录过程安全吗?


Is this auth/login procedure safe?

这种技术足够安全吗?我能相信这样的治疗吗?还是我该补充点什么?

身份验证模块

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中的模糊输入,这样你以后就不会犯错误了。

这种技术是足够安全的。我可以信任这样的会话