学习猫学习猫
目录
前言
1. 所有请求都会自动带上 Cookie浏览器会自动把 Cookie 附加到发往同一域的每个请求里(包括接口、图片、CSS、JS等)。
2. Cookie 最大 4KB,超过就被截断或忽略主流浏览器对单个 Cookie 大小限制是 4096 字节(含 name、value 和其他属性)。
3. 设置HttpOnly防止 XSS 窃取 Cookie开启HttpOnly后,JavaScript 无法通过document.cookie读取该 Cookie,即使存在 XSS 漏洞。
4. 设置Secure确保 Cookie 只通过 HTTPS 传输带有Secure标记的 Cookie 只会在 HTTPS 请求中发送。HTTP 请求不会带。
5. 使用SameSite属性防止 CSRF 攻击
6. Cookie 会在子域名间共享(如果你没限制)给.example.com设置的 Cookie,app.example.com、api.example.com都能访问。
7. Cookie 过期时间影响是否“持久”
8. 第三方 Cookie 快没用了主流浏览器(Chrome/Safari/Firefox)都在限制第三方 Cookie,跨站登录、广告跟踪都受到影响。
9. 在欧盟地区,特殊情况
10. 删除 Cookie 的方法是设置一个“已过期”的值Cookie 没法直接delete,只能通过设置Expires=过去时间来使它失效。
开发者操作检查清单:

10个开发者必须了解的 Cookie 知识点

Web 最古老的状态管理机制 Cookie,至今很多人还在踩坑!

Cookie 从 Web 出现那天就诞生了,到今天依然是前后端协作绕不开的东西。

但问题是:很多开发者对 Cookie 的工作机制没搞清楚,用法也不规范,结果就是 —— 登录状态丢失、安全漏洞、用户体验差,甚至合规违规。

本文总结了 10 条最关键、最容易踩坑的 Cookie 使用要点,配上实际开发建议,一次性帮你查漏补缺。

5. 使用SameSite属性防止 CSRF 攻击

SameSite控制跨站请求时是否发送 Cookie,是防止 CSRF 的关键机制。

三个值:

  • Strict:最安全,只有同站点请求才带 Cookie
  • Lax:常用默认值,部分 GET 请求会带 Cookie
  • None:允许跨域,但必须配合Secure

建议:

  • 认证 Cookie 至少设置SameSite=Lax。
  • 跨域场景(如主站+子站)用SameSite=None; Secure。

9. 在欧盟地区,特殊情况

在欧盟地区,必须征得用户同意才能设置非必要 Cookie 。GDPR 和 ePrivacy 法规要求,设置追踪类 Cookie 必须用户明确同意。

建议:

  • 实现清晰的 Cookie 通知和分类同意弹窗。
  • 区分“必要”和“非必要”Cookie,非必要的要等用户同意后才设置。

开发者操作检查清单:

  • Cookie 是否够小?
  • 是否设置了HttpOnly和Secure?
  • 是否配置了SameSite?
  • 是否真的需要持久化?
  • 非必要 Cookie 是否获得了用户同意?

如果这篇文章对你有帮助,记得转发给团队里的后端/前端/安全工程师一起看,很多坑一个人踩不如大家一起避。

来源:微信公众号 · 芝士

评论
登录后参与讨论
暂无数据
还没有评论,来说点什么吧