验证会话和mysql时间

时间:2016-02-19 12:46:59

标签: php mysql session cookies

我已经为登录系统创建了会话表,当用户成功登录时,会生成随机会话密钥并与登录用户的用户ID相关联,并在会话表中添加了一个expirytime列,其默认值为timestamp of当前+一小时后,即如果时间是17:10:32,则该列时间将是18:10:32。所有这些都添加到数据库中。登录时,会检查会话密钥,并通过以下命令检查此时间: "SELECT * FROM active_sessions where session_key = :asession and expirytime > NOW()"

我的问题是,在会话过期的情况下(即到期时间列的时间已过期),如果有人更改了他的计算机时间,那么上面的查询将变为真,并且将使用过期的会话。 / p>

其次,无论如何,会话仅通过其创建的设备起作用(以防止窃取cookie并在其他设备中使用它们)。谢谢

1 个答案:

答案 0 :(得分:1)

现在()会返回服务器时间,因此更改本地时间的用户不会影响到期流程。

根据确保会话仅适用于启动计算机,可能需要做一些事情:

  • 将会话ID与某个令牌关联。
  • 捕获用户代理,IP地址等,并将其与会话详细信息一起存储在数据库中。
  • 同时验证IP和用户代理等的会话和到期检查。

这些不会给你100%的保护,但你会有一些东西可以开始。