在服务器端处理会话时,我是否需要使会话 cookie 过期?

信息安全 Web应用程序 饼干
2021-09-01 20:01:27

cookie 中唯一的数据是会话 ID。创建会话时没有设置过期时间戳,会话始终在服务器端评估以查看它是否已过期。

注销时,会话在服务器端被销毁。那么让cookie过期有什么意义吗?

3个回答

告诉浏览器使 cookie 过期只是一种形式的便利,因为用户总是能够覆盖它。毕竟,cookie 确实在他的浏览器上,因此您将始终在服务器端检查会话的到期情况。

也就是说,我仍然建议在 cookie 上设置过期日期。这是用户浏览器中的一条信息,当不再需要它时,告诉浏览器删除它不是一个坏主意。

虽然它不会构成直接风险,但无论如何我都会让它过期。这只是一行额外的代码,为什么不呢。

不,事实上它是有害的。

从技术上讲,您不能使会话 cookie 过期——一旦您设置了过期日期,它就会成为持久性 cookie

我认为您要问的是“最好将会话 ID 存储在会话 cookie 中还是持久性 cookie 中?” 我会推荐一个会话 cookie,因为它只保存在内存中,并且会在用户关闭浏览器的那一刻从 cookie jar 中删除。如果您使用持久 cookie,它会存储在文件系统中,并且在过期或用户单击注销按钮之前不会被删除——有时他们会忘记。持久性 cookie 会保留一段时间,这意味着恶意用户可能会在片刻后出现,打开浏览器并恢复用户的会话。