我正在使用codeigniter的会话类来处理我的PHP会话。每次访问该站点时自动创建的会话变量之一是session_id:
用户唯一的会话ID(这是一个统计上随机的字符串,具有非常强的熵,用MD5进行散列以便于移植,并且每五分钟重新生成一次)(
)
在我的网站上,我需要具有跟踪未注册用户的功能,我现在通过将访问者的session_id与数据库中VISITOR表中存储的id值进行比较来实现此功能。除了会话ID每五分钟超时这一事实外,这种方法非常有效。我希望我的应用程序能够记住访问者超过5分钟(有点像你在没有注册的情况下发布问题或答案时所做的那样)。
我的问题是:你能看到任何安全问题,只需延长会话级别的再生时间(大约12小时)吗?
更新:根据我到目前为止看到的答案,似乎更多的是性能问题,而不是安全问题。 codeigniter会话类的工作原理有点奇怪,因为在创建新会话时,它还会创建一个新的cookie,它似乎只要会话持续存在。我想我可以使用会话ID创建另一个cookie,只要我需要它就会持续。但是,如果我要保存12小时之类的会话,会有多少性能问题?它会减慢速度,除非我在12小时内拥有数百万独立访客(在这种情况下,我会担心更大的问题......)?
答案 0 :(得分:1)
有这个想法的两件事:
所以,是的,安全风险很小;但我不认为这是真的相关。
另一个想法是保持短暂的会话生命周期,但是在cookie中存储一些信息,其寿命比那更重要吗?
实际上,有足够的信息允许重新创建新会话,而用户却没有注意到任何内容?
但是,是的,这需要你做更多的工作......
在编辑后添加更多精确度:
有点奇怪的是codeigniter 会话类因为何时起作用 它也创造了一个新的会议 创建一个新的cookie似乎 只要会议持续下去。
这是处理会话的“标准”方式 - 至少在PHP中:
但是有多少性能问题 如果我要拯救它,那就好吗? 12个小时的会议?
如果您的网站上有数百万用户,这将意味着拥有数百万个文件,每个文件包含一个用户的会话数据 - 并且拥有太多文件并不好。
但是你有几百个用户,我想这应该是好的。
答案 1 :(得分:0)
根据您网站的访问者数量,将会话保存12小时可能不是一个好主意。为什么不使用cookies?这取决于用户是否在浏览器中启用了它:http://www.php.net/setcookie。
答案 2 :(得分:0)
一个安全提示:
在sess_match_useragent(application/config/config.php)