Cookie
字数 935 2025-11-13 00:29:57
Cookie
-
基本概念
Cookie是网站为了记录用户状态而存储在用户浏览器中的小型文本数据。当用户访问网站时,服务器可以通过HTTP响应头向浏览器发送Cookie,浏览器会将其保存,并在后续请求中自动将Cookie发回服务器,从而实现状态保持(如登录状态、个性化设置)。 -
工作原理
- 生成与发送:服务器通过HTTP响应头的
Set-Cookie字段将Cookie发送给浏览器。例如:Set-Cookie: session_id=abc123; expires=Mon, 01-Jan-2024 12:00:00 GMT; path=/ - 存储与携带:浏览器根据规则(域名、路径、有效期)保存Cookie,并在后续同域请求中通过
Cookie请求头自动附加数据:Cookie: session_id=abc123 - 服务器识别:服务器解析请求中的Cookie,恢复用户上下文(如用户身份、购物车内容)。
- 生成与发送:服务器通过HTTP响应头的
-
关键属性
- 域名(Domain):指定Cookie有效的域名(默认为当前域名)。
- 路径(Path):限制Cookie仅对特定路径可见。
- 过期时间(Expires/Max-Age):设置Cookie失效时间(会话Cookie在浏览器关闭后删除)。
- 安全标志(Secure):仅通过HTTPS传输。
- HttpOnly:禁止JavaScript访问,防范XSS攻击。
-
分类与用途
- 会话Cookie:临时保存浏览会话信息(如登录态),关闭浏览器后失效。
- 持久Cookie:通过设置过期时间长期存储(如语言偏好)。
- 第三方Cookie由跨域资源(如广告)设置,用于追踪用户行为,近年被浏览器限制。
-
安全与隐私问题
- 跨站请求伪造(CSRF):攻击者利用用户已登录状态伪造请求,可通过验证
Referer或使用Token防御。 - 信息泄露:敏感数据不应存于Cookie,需配合服务端会话机制。
- 隐私争议:第三方Cookie被用于跨站追踪,主流浏览器已逐步禁用。
- 跨站请求伪造(CSRF):攻击者利用用户已登录状态伪造请求,可通过验证
-
技术演进与替代方案
- SameSite属性:限制跨站请求携带Cookie,值包括
Strict(完全禁止)、Lax(部分允许)、None(允许)。 - Web Storage:
localStorage与sessionStorage提供更大存储空间,但不会自动随请求发送。 - 服务端会话:将会话数据存于服务器,仅通过Cookie传递会话ID(如PHP的
$_SESSION)。
- SameSite属性:限制跨站请求携带Cookie,值包括