2

据我所知,对于 HTTP,有两种方法可以存储属于客户端的数据并将某种状态带入原本无状态的 Browser-webcontainer-connection:1)存储在客户端 cookie 中的数据 - 或 2)会话ID 存储在 cookie 中,相关数据存储在服务器端的 web 容器中。当我比较这两种可能性时,我想不出一个理由,为什么要走第一种。但是,当我查看浏览器的 cookie 时,我看到其中存储了很多数据。

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

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

4

1 回答 1

1

仅依赖会话的问题在于,为了限制服务器的内存使用,会话数据必须在一段时间后被清除,例如20 分钟是 ASP.NET 的默认值

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

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

写完之后,为了允许用户远程结束他们的会话,像GmailFacebook这样的网站并不仅仅依赖于 cookie 值进行身份验证,但他们可能对这些会话使用特殊存储,而不是通用会话。

于 2013-12-01T19:45:29.063 回答