我已经为登录系统创建了会话表,当用户成功登录时,会生成随机会话密钥并与登录用户的用户ID相关联,并在会话表中添加了一个expirytime列,其默认值为timestamp of当前+一小时后,即如果时间是17:10:32,则该列时间将是18:10:32。所有这些都添加到数据库中。登录时,会检查会话密钥,并通过以下命令检查此时间:
"SELECT * FROM active_sessions where session_key = :asession and expirytime > NOW()"
我的问题是,在会话过期的情况下(即到期时间列的时间已过期),如果有人更改了他的计算机时间,那么上面的查询将变为真,并且将使用过期的会话。 / p>
其次,无论如何,会话仅通过其创建的设备起作用(以防止窃取cookie并在其他设备中使用它们)。谢谢
答案 0 :(得分:1)
现在()会返回服务器时间,因此更改本地时间的用户不会影响到期流程。
根据确保会话仅适用于启动计算机,可能需要做一些事情:
这些不会给你100%的保护,但你会有一些东西可以开始。