除了用于存储会话ID之外,我为什么要使用cookie?

时间:2013-12-01 18:57:48

标签: session cookies session-cookies web-container servlet-container

对于HTTP,据我所知,有两种方法可以存储属于客户端的数据并将某种状态转换为无状态的Browser-webcontainer-connection:1)存储在客户端cookie中的数据 - 或2 )存储在cookie中的会话ID以及存储在服务器端的web容器中的相关数据。当我比较这两种可能性时,我无法想出一个理由,为什么一个人应该采取第一种方式。但是,当我查看浏览器的cookie时,我发现其中存储了大量数据。

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

任何人都可以想出使用cookie存储会话数据有益甚至是必要的场景吗?

1 个答案:

答案 0 :(得分:0)

完全依赖会话的问题在于,为了限制服务器的内存使用,会话数据必须在一段时间后被清除,例如20 minutes is the default of ASP.NET

因此,如果您网站的用户必须登录并且您想为他们提供“记住我”选项,那么如果您为此目的使用会话,您的用户将在一段时间不活动后退出。< / p>

实现此目标的最简单方法是存储一个具有较长过期日期的加密cookie,以便用户稍后进行身份验证。

写完后,为了让用户能够远程结束会话,GmailFacebook这样的网站不仅仅依靠cookie值进行身份验证,而且可能使用了特殊的存储这些会话而不是通用会话。