Php 此身份验证/登录过程安全吗?
这种技术足够安全吗?我能相信这样的会议吗?或者我应该补充点什么 身份验证-模块Php 此身份验证/登录过程安全吗?,php,security,session,authentication,kohana,Php,Security,Session,Authentication,Kohana,这种技术足够安全吗?我能相信这样的会议吗?或者我应该补充点什么 身份验证-模块 class Auth { public function login($user, $pass, $random_unique_salt) { if ($this->_bcrypt($pass, $random_unique_salt) === 'correct password hash') // etc. { // Success..
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);
}
}
class Controller_Membersonly extends Controller_Base {
public function action_index()
{
if ($this->_login === TRUE)
{
// Success...
echo 'Show (safely?) some secrets.';
}
}
}
仅限成员-控制器
class Controller_Base extends Controller {
protected $_login = FALSE;
public function before()
{
$this->_login = Session::instance()->get('login', FALSE);
}
}
class Controller_Membersonly extends Controller_Base {
public function action_index()
{
if ($this->_login === TRUE)
{
// Success...
echo 'Show (safely?) some secrets.';
}
}
}
我看到的唯一弱点是。每个密码都需要有自己独特的salt。bcrypt不是一种糟糕的密码散列方法,因为它无法在GPU或FPGA上高效实现
代码风格有点偏执,不是一件坏事。您的比较运算符有点过多。一定要仔细阅读,以免将来犯错误 我看到的唯一漏洞是。每个密码都需要有自己独特的salt。bcrypt不是一种糟糕的密码散列方法,因为它无法在GPU或FPGA上高效实现
代码风格有点偏执,不是一件坏事。您的比较运算符有点过多。一定要仔细阅读,以免将来犯错误 这种技术足够安全。我可以信任这样的会话。这种技术足够安全。我可以信任这样的会话。稍微有点过时,但您的密码哈希方案似乎没有使用salt。你用的是什么杂凑法?一些普通的md5/sha-x,或者一个为密码散列而设计的函数,比如bcrypt?这只是一个随机的例子,这就是为什么会有注释//等。bcrypt是一个不错的选择。好:)顺便说一句,我建议删除你的一个标记,而使用“php”标记。一些能够回答这个问题的人可能会把“php”作为最喜欢的标签,但你的任何一个都没有。稍微有些夸张,但看起来你的密码哈希方案没有使用salt。你用的是什么杂凑法?一些普通的md5/sha-x,或者一个为密码散列而设计的函数,比如bcrypt?这只是一个随机的例子,这就是为什么会有注释//等。bcrypt是一个不错的选择。好:)顺便说一句,我建议删除你的一个标记,而使用“php”标记。一些能够回答这个问题的人可能会把“php”作为最喜欢的标签,但你的任何人都不会。谢谢你的输入!此代码示例不完整$random_unique_salt是指不可预测的salt。@stacknoob是的,但每个密码都必须是唯一的,它应该是登录函数的一个参数。也可以在login-method中为每个密码生成唯一的salt,但在参数中添加$random_unique_salt是有意义的,因为本例中没有实现salt生成器。感谢您的输入!此代码示例不完整$random_unique_salt是指不可预测的salt。@stacknoob是的,但每个密码都必须是唯一的,它应该是登录函数的一个参数。也可以在login-method中为每个密码生成唯一的salt,但在参数中添加$random_unique_salt是有意义的,因为本例中没有实现salt生成器。