如何使用cookie自动重新登录用户

时间:2011-02-17 16:00:24

标签: php web-applications authentication cookies

所以在我的应用程序登录表单上,我有一个像[_]这样的小盒子,记得我

当用户检查我们是否使用用户名的值设置$_COOKIE['rememberMe']时。现在,当该用户3天后回来时,我显然想要识别它们并自动重新登录。简单地检查该cookie是否存在然后使用它的值作为没有密码登录的用户名是不安全的。但是我不确定我会如何自动记录它们...这通常有办法吗?

4 个答案:

答案 0 :(得分:4)

您的Cookie应该有三个值: 用户名 到期时间 3.会话代码

当用户登录时,生成会话代码并设置到期时间。 将会话代码和到期时间存储在cookie和数据库中。

然后,只要用户返回该站点,并且用户未登录: 1.检查cookie 2.检查数据库中的cookie

如果所有三个变量匹配且过期时间未结束,请将用户登录。

或者,如果您只是将会话代码编码为($ username。$ expiration_time)的md5,则您不必设置数据库进行存储和检查。虽然拥有随机生成的会话代码的数据库更安全。

答案 1 :(得分:2)

这非常不安全。由于cookie是您必须经历的唯一事情,并且cookie可以在系统之间转移,因此您很容易受到cookie中毒攻击和cookie复制攻击。如果这确实是你设置的课程,你将需要使用某种方式来打印用户的系统并将该信息存储在某个地方的数据库中,这可能是会话状态服务器上持久会话的一部分。然后可以将此信息与新登录进行比较,因此如果cookie被转移到另一个系统,它将不匹配,并且自动登录将失败。至于完成登录,我建议至少要有一个会话状态数据库,其中会话信息可以按会话ID和用户名存储。如果这两个项目存储在cookie中,则可以使用该信息从数据库中获取信息,并且足迹可以用作止损(尽管非常弱)以防止误用。 / p>

答案 2 :(得分:0)

在Cookie中放置一个随机且唯一的哈希值,并使用当前客户端的IP地址将其存储在数据库中。

如果用户回来,您可以在数据库中搜索哈希值。

答案 3 :(得分:0)

您需要存储在cookie中的唯一信息是一些独特的哈希,它将指向系统中正确的用户会话。考虑到用户名可以被攻击者捕获并与其他信息的组合一起使用,存储用户名或其他信息是多余且不安全的。为了使系统更安全,您应该实现一个通过IP地址和浏览器详细信息检查用户位置的层。我建议你应该从Facebook和谷歌等公司那里学习用户帐户。