登录身份验证令牌php ..卡住了

时间:2012-07-19 19:20:09

标签: php

当用户注册帐户时,会创建一个包含列的表格;用户标识和令牌。这是因为如果用户在不同计算机上登录时检查记住我,则每台计算机都有不同的令牌。

register.php

//user specific table created    
$create = $connectdb->prepare("CREATE TABLE `user-:username` (userid INT, token varchar(200)");
                        $executequery = $create->execute(array("username"=>$username)); 

这是login.php的一个片段;我创建令牌,将令牌存储在cookie中并将令牌插入该用户特定表

  if($remember==1) {
                            $token = md5(uniqid('',true));
                            setcookie('token',$token,time()+60*60*24*365);

                            $rememberquery = $connectdb->prepare("INSERT INTO `user-:username` VALUES ('',:username,:token)");
                            $rememberquery->execute(array(":username"=>$username,":token"=>$token));
$_SESSION['username'][0] = $username;       
$_SESSION['username'][1] = $userid;                 
                            }

现在我卡住了(假设我已经完成了以前的正确)。何时/如何检查cookie令牌到数据库令牌?

1 个答案:

答案 0 :(得分:4)

正确的身份验证很难正确执行,因此,您必须不时地扮演一个小黑客才能使事情变得更加正确。首先,您应该阅读Session Management Cheat Sheet和owasp页面。

本讲座结束后,您应该了解会话管理的内容和内容。但如果你需要记住我的备忘单;)它应该是这样的:

  • 值应该是完全随机的,或加密强大的(这可能很棘手)
  • 应该在recive时验证
  • 永远不要相信你在cookie中得到的东西,所以如果没有正确的验证,那么在cookie中存储用户名是一个非常非常糟糕的主意
  • 如果会话过期,请创建一个新的,用表中的数据填充它,瞧,
  • 如果您需要保留某些内容,请使用数据库而不是Cookie,Cookie不好而且不值得信赖;)

微软Threats and countermeasures 也是一个很好的出版物,它可以帮助你很多。

相关问题