最佳实践 - 会话处理/超时

时间:2013-03-28 08:00:35

标签: c++ mysql session cookies

使用MySQL处理C ++服务器中的会话和超时的最佳做法是什么。

我的C ++服务器生成会话GUID并将其作为Set-Cookie发送到客户端 - 浏览器。

我是否应该暂停任何会话?

我应该在MySQL用户表中保存会话GUID吗?

当用户做某事时,我应该更新表中的任何时间戳,还是应该直接在C ++服务器中保存会话和上次操作?

我应该如何处理“保持登录状态”,永不过期会话GUID? (这可能是一个很大的安全漏洞)

1 个答案:

答案 0 :(得分:1)

我无法帮助您使用C ++部分,但这里有一些关于会话的指针(服务器端):

  • Session对象应至少保持

    • 上次访问的时间(提出请求)
    • 每次访问时计算的到期时间,将当前时间添加到最大空闲时间(在会话被视为过期之前不进行访问的最长时间)
  • 在每次访问时,将Session对象中存储的到期时间与当前时间进行比较,以确定会话是否已过期。如果是这种情况,会话将失效,并且会话对象将从会话管理器的缓存中删除。在Web服务器的情况下,302被发送回客户端并且cookie已过期。

  • 会话管理器可以实现会话缓存,该缓存位于内存中或持久保存到磁盘。将其保留到磁盘可在服务器重新启动时提供会话恢复。缓存还可以是分布式缓存(例如,Memcache),它允许群集中的多个服务器共享Sessions对象并在服务器之间提供负载平衡。

相关问题