Session 会话和cookie之间的关系

Session 会话和cookie之间的关系,session,cookies,Session,Cookies,我了解了SESSION和COOKIE之间的区别,但我正在试图找到两者之间的关系。我查看了多个网站,但没有找到相关的答案,所以感到困惑。Cookie是在用户浏览器还是系统上生成的?一些人说它是在系统上生成的,而另一些人说它们是在用户的浏览器上创建的。会话还以cookie或cookie文件的形式保存。这是真的吗?会话将数据存储在服务器上。但是,会话信息存储在用户cookie中 会话使用cookies在用户的浏览器中存储有关您自己的信息。例如,cookie SSID包含一个会话标识符,对于该标识符,服

我了解了
SESSION
COOKIE
之间的区别,但我正在试图找到两者之间的关系。我查看了多个网站,但没有找到相关的答案,所以感到困惑。Cookie是在用户浏览器还是系统上生成的?一些人说它是在系统上生成的,而另一些人说它们是在用户的浏览器上创建的。会话还以cookie或cookie文件的形式保存。这是真的吗?

会话将数据存储在服务器上。但是,会话信息存储在用户cookie中


会话使用cookies在用户的浏览器中存储有关您自己的信息。例如,cookie SSID包含一个会话标识符,对于该标识符,服务器将了解与该用户绑定的会话类型

我找到了这个链接,它解释了cookie与会话之间关于持久性和负载平衡服务器的关系。它基本上讲的是,如果您的会话与一台服务器连接,并且您被重定向,那么cookie将存储相关的会话信息,如会话ID,以便您可以在所有服务器上持久化


这个链接比我能解释的要好得多。

COOKIE驻留在客户端,即浏览器上。COOKIE随请求自动传递给服务器,服务器在服务器上使用COOKIE获取服务器为该客户端存储的任何会话数据

饼干 cookie只是存储在用户浏览器中的键值对。cookie将作为包含您请求的网页的HTTP响应的一部分发送到浏览器

当您的浏览器收到cookie时,它会存储cookie,并将其与在同一网站上发出的每个后续请求一起发送回服务器

因为cookie是HTTP请求和响应头的一部分,所以它们的大小有些有限

Cookie中存储的典型信息:

  • 会话ID(见下文)
  • 跟踪ID(谷歌分析等)
  • 用户偏好(首选语言或货币等)
对于较大或敏感的数据,通常在会话中存储值。cookie仅用于标识正确的会话

cookie可以配置为仅在浏览器窗口关闭之前有效,或者具有可配置的生存期(1周、1个月、1年等)。如果在此期间再次访问该网站,浏览器将在每次请求时发送cookie

一场 会话是存储在服务器上的一组数据,通常作为键值对。会话被分配一个伪随机的秘密ID,该ID通常使用cookie存储在用户的浏览器中,例如
sessiond=abcdef123456789
。会话ID通常与服务器上包含会话数据的文件名匹配


会话通常是短期的,如果在一段时间内(20分钟左右)未使用,则会自动删除

会话中存储的典型信息:

  • 当前登录的用户的ID
  • 购物车
  • 。。。您能想到的任何东西,都可以在会话到期时安全地删除
例子 假设我第一次访问一个网站。网站检测到我没有发送会话cookie,因此它为我创建了一个会话。它在服务器上创建一个会话文件,例如
/tmp/sess\u abcdef123456789

然后它发送一个cookie头,其中包含包含网页的HTTP响应:

HTTP/1.1 200 OK
Set-Cookie: SESSID=abcdef123456789
我的浏览器存储这个cookie。如果我访问同一服务器上的其他页面,我的浏览器将发送此cookie和请求:

GET /cart HTTP/1.1
Cookie: SESSID=abcdef123456789
当接收到第二个请求时,服务器可以检查是否存在具有此ID的会话文件,并使用它检索会话数据

您的web编程语言将提供对会话的支持,并且应该为您处理大部分这种复杂性。您通常可以直接使用会话数组/对象,该数组/对象将已填充访问您的网站的用户特定的会话数据,并将在更新会话数据时自动保存;这对你来说应该是完全透明的

安全 将用户登录到您的网站时,请始终在会话中存储用户ID永远不要信任存储在cookie中的用户ID来加载用户数据。

做饼干很容易。如果要根据存储在cookie中的用户ID加载用户信息,则可以很容易地更改此cookie中的用户ID以访问网站上任何用户的帐户


另一方面,如果您将用户ID存储在会话中(该会话被分配了伪随机会话ID),攻击者将很难猜出当前分配给该用户的会话ID。

我对此不理解—“服务器将了解与该用户绑定的会话类型”,是否存在为用户创建的会话类型?如果是,它们是什么?服务器,具体取决于与会话cookie关联的RealizationII本身。会话本身存储在内存或磁盘上(也取决于实现)。当向服务器发送请求时,他从请求所需的cookie中获取请求,并绑定她的现有会话。如果没有,它将创建一个新的。是否强制设置cookie?服务器自行设置是否意味着会话数据存储在cookie/cookie文件中?不,通常cookie包含会话ID。会话数据将存储在服务器上。好的,现在已经很清楚了。谢谢。熟悉一个新术语“持久性”是的,持久性、负载平衡、会话和cookie都是相关的。我明白了,你应该经常遇到这些术语。仍在学习这方面的各种概念。“会话通常是短暂的,如果有一段时间(20分钟左右)没有使用,就会自动删除。”假设我正在使用gmail帐户并在不注销的情况下关闭浏览器,过了很长时间后再回来。它没有问我