2

为了建立一个安全的登录系统,我一直在阅读有关会话的信息。据我了解,会话不太可能通过蛮力被盗,即使这并非不可能,因为它们仅使用 cookie 将会话与计算机匹配。

我正在考虑实施第二次检查,以使黑客无法强行进入其他人的会话,这个想法是还设置一个随机 cookie 并检查它是否与存储在服务器中的会话数据匹配, 我想这可能会使 n² 更难找到正确的匹配。

示例代码:

//if login is successful 
if(password($this->checkPass,$this->time) == $this->pass){
    $random = hash("sha256",rand(0,getrandmax()).$_SERVER['REMOTE_ADDR']);
    session_start();
    session_regenerate_id(1);
    $_SESSION['name'] = $this->loginData;
    $_SESSION['logged'] = 1;
    $_SESSION['cookie'] = $random;
    setcookie("data",$random,0,"/");
}

//Sample code to authenticate a user:
//it checks if the user is logged in and if the user's cookie is what it is
//supposed to be, otherwise kills the session in the server

if($_SESSION['logged'] != 1 || $_SESSION['cookie'] != $_COOKIE['data']){
    $_SESSION = array();
    session_destroy();
    setcookie("data","",time()-3600);
    header("Location: $adminLogInPage");
    die;
}

这会是安全性和性能之间的良好权衡吗?还是完全没有必要?

我正在考虑为“记住我”功能实现类似的代码,但我不会使用会话,只是使用三重 cookie 系统。一个 cookie 匹配用户,另外两个匹配存储在数据库中的随机值。这是个好主意吗?

考虑到该网站正在使用 SSL,是否存在无法避免的威胁?

4

0 回答 0