Session 为什么我应该使用cookie而不是存储会话id?

Session 为什么我应该使用cookie而不是存储会话id?,session,cookies,session-cookies,web-container,servlet-container,Session,Cookies,Session Cookies,Web Container,Servlet Container,对于HTTP,据我所知,有两种方法可以存储属于客户端的数据,并将某种状态带入无状态浏览器webcontainer连接:1)存储在客户端cookie中的数据,或2)存储在cookie中的会话ID和存储在服务器端webcontainer中的相关数据。当我比较这两种可能性时,我想不出一个理由,为什么一个人应该走第一条路。但是,当我看我的浏览器的cookies时,我仍然看到了很多存储在其中的数据 webcontainer(如tomcat)可以将任意数据与会话id一起存储—cookie的大小非常有限 C

对于HTTP,据我所知,有两种方法可以存储属于客户端的数据,并将某种状态带入无状态浏览器webcontainer连接:1)存储在客户端cookie中的数据,或2)存储在cookie中的会话ID和存储在服务器端webcontainer中的相关数据。当我比较这两种可能性时,我想不出一个理由,为什么一个人应该走第一条路。但是,当我看我的浏览器的cookies时,我仍然看到了很多存储在其中的数据

  • webcontainer(如tomcat)可以将任意数据与会话id一起存储—cookie的大小非常有限
  • Cookie更容易受到攻击,因为它们存储在客户端。在我看来,将数据保存在服务器端更安全
  • Cookie和webcontainer会话都可以定义过期日期
  • 浏览器和webcontainer都会在重新启动时保存数据

有人能想出一种使用cookie存储会话数据的方案吗?例如,仅依赖会话的问题是,为了限制服务器的内存使用,必须在一段时间后清除会话数据

因此,如果您站点的用户必须登录,并且您想给他们一个“记住我”选项,那么如果您为此目的使用会话,您的用户将在一段时间的不活动后注销

实现这一点的最简单方法是存储一个过期日期较远的加密cookie,这将允许用户在以后进行身份验证

写了这篇文章之后,为了允许用户远程结束他们的会话,站点喜欢并且不完全依赖cookie值进行身份验证,但他们可能正在为这些会话使用特殊存储,而不是通用会话