575 字
3 分钟
Cookie Session Token理解笔记
作为初学者,之前对于cookie、session和token的概念老是搞不清楚,现在搞懂了一些,就赶紧记下这一刻的知识,方便以后的查询。
历史的演进是:Cookie -> Session (基于Cookie) -> Token (尤其是JWT)。
1. Cookie
Cookie 本身不进行验证,它只是一个存储和传输机制,一个携带信息的工具。在session出现之前,Cookie直接存储用户信息,十分不安全。
2. Session
session一般结合cookie使用,是存储在服务器,它会在服务器储存相关信息,设置session并返回sessionid,sessionid存储在客户端,每次登陆用cookie带上sessionid,去寻找session验证。
Session 验证:类似于“查账本”的方式。服务器收到Session ID后,需要去数据库或内存中查找这个ID对应的Session数据。
因为需要为每个活跃用户存储一份数据,所以存储量 = 用户数量 × 每个用户的数据大小,所以导致了技术上的限制:
- Session数据存储在单个服务器的内存中
- 在集群环境中,请求可能被负载均衡到不同服务器
- 除非所有服务器共享Session存储(如Redis),否则无法识别用户
3. Token
token是存储在客户端的,相关信息存储在token的payload上,服务器只储存一个统一的密匙,用密匙进行验证。
token验证:类似于“验证人民币”的方式。服务器中的密匙,根据token的header和payload验证签名。(header上的算法类似于开锁方法和说明书,密匙相当于那把钥匙,算法不等于密匙)
因为只存储一份统一的密匙,所以存储量是个常量,天生符合分布式系统。
4. 安全性
关于安全方面,不太清楚,就直接贴一下,AI的回答吧。
- Session 的安全核心是:Session ID 的保密性。一旦泄露,攻击者可以完全冒充用户,直到服务器端主动使其失效。
- Token 的安全核心是:签名验证和短生命周期。它的设计一定程度上接受了“令牌可能会被偷”的现实,但通过技术手段限制其破坏力。
Cookie Session Token理解笔记
https://sheep44044.github.io/posts/技术/2025-10-19-cookie/