如何检测用户何时登录?

时间:2013-06-11 02:50:36

标签: php login security

我目前正在开展一个小小的即时通讯项目。到目前为止,一切进展顺利。

唯一的问题是安全性。当有人登录时,会设置2个cookie。

1) Name: loggedin; Value: {username}  
2) Name: mvc; Value: {userSecretKey}  <-- pretty useless

这些是我使用的Cookie,因此我可以设置下一页。但是,我相信有更好的方法可以做到这一点。不,我不想使用会话,因为我有一个“记住我”的功能。

有人可以自己设置Cookie并“登录”而无需实际登录。

什么是更好的方法来设置它?也许是某种改变的关键?

2 个答案:

答案 0 :(得分:1)

我建议使用PHP会话以及纯粹用于记忆我功能的cookie。您可以这样设置:

  1. 用户登录
  2. 您在会话中存储用户IP和Useragent
  3. 如果记住我已启用,请使用用户ID,唯一的随机ID + IP&amp;创建一个新的数据库条目。 useragent of user,然后添加一个引用唯一随机ID的cookie。
  4. 每次访问会话时,请检查请求IP和Useragent是否与登录时最初在会话中设置的请求匹配。
  5. 当用户关闭浏览器后返回时,只剩下记住我的cookie,将请求IP和Useragent与数据库中的那个进行比较
  6. 如果匹配,请自动重新登录。
  7. 用户玩得很开心。
  8. 干杯!

答案 1 :(得分:0)

即使使用“记住我”功能,您仍然可以使用PHP会话。您只需要使用用户标识或用户名设置cookie,然后,如果他们没有登录并且cookie存在,请从cookie中读取他们的信息并将其登录。

让您的逻辑检查用户是否已登录,检查登录用户的活动会话。如果它不存在,请重定向用户登录。在登录逻辑中,检查是否设置了“记住我”cookie。如果是,请使用cookie记录用户。如果cookie不存在,请以登录形式显示。

对于安全位,您可以使用在您登录用户时重置的密钥。它是否会被劫持,是的,但如果您不断更改密钥/令牌,则劫持窗口应该很小。< / p>