我一直在阅读有关会话的内容,以便建立一个安全的登录系统。据我所知,会话不太可能通过蛮力窃取,即使这不是不可能的,因为他们只使用cookie来将会话与计算机相匹配。
我正在考虑实施第二次检查,以使黑客无法强行进入其他人的会话,这个想法是设置一个随机cookie并检查它是否与存储的会话数据相匹配在服务器中,我想它可能会让它更难以获得正确的匹配。
示例代码:
//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,是否存在任何无法避免的威胁?