为什么流行的网站将非常复杂的与会话相关的数据存储在cookie中,这意味着什么?


19

作为Web开发人员,我们所有人都知道会话有助于克服与​​HTTP无状态本质相关的问题。我们创建一个唯一的会话ID,并将其发送给浏览器-当浏览器向我们发送相同的ID时,我们可以轻松识别用户。

所有这些听起来很简单,而且用任何一种语言实现都没有那么复杂。

现在

查看我拍摄的以下屏幕截图。这些显示了流行网站存储的cookie类型。看起来他们正在存储多个会话ID,或者正在尝试通过设置太多cookie来隐藏实际ID,或者,这是他们为防止会话劫持和其他相关问题而采取的一种非常专门的安全措施。管他呢。

Gmail(登录前)

在此处输入图片说明

Gmail(登录后)

在此处输入图片说明

脸书

在此处输入图片说明

StackExchange

在此处输入图片说明

(不用担心,您不能偷走我的会话-这是陈旧且不完整的:))

因此,我的问题是-这种复杂性有什么目的?请说明这些不同的Cookie的含义(通常),以及它们的设置目的。最后,提示我如何在自己的应用中做到这一点(以及是否应该这样做)。

另一个问题:在很多情况下,Cookie中的值看起来像是URL编码的-为什么呢?

Answers:


21
  1. 有时将某些数据存储在数据库的会话表中是不切实际的。如果某些数据被大量更新,那么它也可能使数据库陷入瘫痪。如果是这样,并且数据不太重要,则最好将其存储在单独的cookie中。

  2. 当(1)发生时,您必须处理每个cookie 4kb的限制,因此将所有cookie中的会话数据存储在一个cookie中是一个坏主意。

  3. 能够将所有内容都存储在所需的最少数量的cookie中,这很好,但是由于项目复杂性的考虑,这很困难。一些应用程序是由几个团队开发的。有时候,你所看到的是一个Web服务器实际上是一个代理,会谈到几个不同的集群网络服务器,路由网站的不同部分,以不同的集群,每个都有自己的一套饼干。

  4. 饼干很便宜。您是该规则的例外-没有人会在他们的cookie存储区中查看有多少 cookie。尝试将所有客户端会话数据合并到尽可能少的cookie中几乎没有性能优势。


我也是该规则的例外。
Michael Slade
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.