【发布时间】:2011-11-05 02:37:44
【问题描述】:
我有一种方法可以检查用户名和密码(哈希+盐)是否正确。之后,如果用户有访问权限,我会这样做:
if(isset($remember) && $remember == '1') {
setcookie('email', $email, time()+60*60*24*100);
}
else {
setcookie('email', $email, time()+3600);
}
我的问题是关于安全问题。上面的代码不安全?需要签名之类的东西吗?
例如:
$user_email = $email;
$hash = sha1(rand(0,500).microtime());
$signature = sha1($hash . $user_email);
$cookie = base64_encode($signature . "-" . $hash . "-" . $user_email);
setcookie('authentication', $cookie);
你怎么看?
【问题讨论】:
-
如何检查是否有人登录?
-
好吧,我只检查 cookie 是否已定义(isset)或为空
-
哦,这很不安全,因为在浏览器中手动设置cookie非常简单!
-
为什么不使用 $_SESSIONS?