目录
-
什么是 Cookies?
-
Cookies 的工作原理
-
Cookies 的关键属性
-
Cookies 的常见类型
-
Cookies 的隐私与安全问题
-
如何管理 Cookies?
-
总结
1. 什么是 Cookies?
Cookies(HTTP Cookies) 是网站存储在用户浏览器中的小型文本数据,用于在多个页面或访问会话之间保持状态。它们由服务器发送到浏览器,并在后续请求中自动回传,使网站能够“记住”用户信息,如登录状态、个性化设置或购物车内容。
典型应用场景:
✅ 用户登录:保持会话,避免重复输入账号密码。
✅ 个性化体验:存储语言、主题偏好。
✅ 广告跟踪:记录用户行为以投放定向广告(引发隐私争议)。
✅ 电商购物车:临时保存未结算的商品信息。
2. Cookies 的工作原理
Cookies 的运作流程分为三步:
-
服务器下发 Cookie
当用户首次访问网站时,服务器通过 HTTP 响应头的Set-Cookie
字段发送 Cookie:http
HTTP/1.1 200 OK Set-Cookie: session_id=abc123; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Secure; HttpOnly
-
浏览器存储 Cookie
浏览器按域名存储 Cookie,并在后续请求中自动附加到Cookie
请求头:http
GET /dashboard HTTP/1.1 Cookie: session_id=abc123; theme=dark
-
服务器读取 Cookie
服务器解析 Cookie 内容,识别用户身份或偏好,返回定制化内容。
3. Cookies 的关键属性
属性 | 作用 |
---|---|
Expires / Max-Age | 设置过期时间(未设置则为会话 Cookie,关闭浏览器后失效)。 |
Domain | 指定生效的域名(如 .example.com 包含所有子域名)。 |
Path | 限制 Cookie 仅在特定路径下生效(如 /admin )。 |
Secure | 仅通过 HTTPS 传输,防止明文泄露。 |
HttpOnly | 禁止 JavaScript 访问,防范 XSS 攻击窃取 Cookie。 |
SameSite | 控制跨站请求时是否发送 Cookie(Strict /Lax /None ,防 CSRF 攻击)。 |
4. Cookies 的常见类型
(1)按生命周期分类
-
会话 Cookie(Session Cookie)
临时存储,浏览器关闭后自动删除(无Expires
或Max-Age
)。 -
持久 Cookie(Persistent Cookie)
设置过期时间,长期有效直至手动清除或过期。
(2)按来源分类
-
第一方 Cookie(First-party)
由当前访问的域名直接设置,通常用于核心功能(如登录)。 -
第三方 Cookie(Third-party)
由其他域名(如广告商、分析脚本)设置,主要用于跨站跟踪(现代浏览器已逐步禁用)。
5. Cookies 的隐私与安全问题
隐私争议
-
跨站跟踪:第三方 Cookie 可能被用于收集用户浏览历史,引发隐私担忧。
-
法规限制:如欧盟《GDPR》要求网站需征得用户同意后才能使用非必要 Cookie。
常见攻击与防护
攻击类型 | 防护措施 |
---|---|
XSS(跨站脚本) | 设置 HttpOnly 阻止 JavaScript 窃取 Cookie。 |
CSRF(跨站请求伪造) | 使用 SameSite=Lax/Strict + CSRF Token。 |
中间人劫持 | 强制 Secure 属性,仅通过 HTTPS 传输。 |
6. 如何管理 Cookies?
用户操作
-
浏览器设置:手动清除特定网站的 Cookie(Chrome:
设置 > 隐私和安全 > 清除浏览数据
)。 -
扩展工具:使用 Cookie 管理器(如 EditThisCookie)批量编辑或删除。
开发者工具
-
查看/调试:按
F12
> Application > Cookies。 -
代码控制(需非
HttpOnly
):javascript
// 读取所有 Cookie console.log(document.cookie); // 设置新 Cookie document.cookie = "username=John; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/";
7. 总结
Cookies 是 Web 开发中维持用户状态的基础技术,但也面临隐私与安全的挑战。合理使用 Secure
、HttpOnly
、SameSite
等属性,结合现代替代方案(如 localStorage
、JWT 令牌),能在功能与安全之间取得平衡。
未来趋势:随着浏览器逐步淘汰第三方 Cookie(如 Chrome 2024 年计划),开发者需转向隐私友好的替代方案(如 Privacy Sandbox API)。
延伸阅读:
-
MDN: HTTP Cookies
-
OWASP: Secure Cookie Attributes