Cookie 到底是什么?
你去一家便利店买东西。老板记住了你的口味:“这位老顾客喜欢抹茶味的饭团对吧?“下次你来,不用开口,他就给你拿好了。
但便利店老板的记忆力是有限的。他不能记住全城所有人的喜好。
互联网也是一样的。网站服务器是"老板”,你是"顾客”。问题是:互联网上有几十亿用户,服务器不可能在内存里记住每一个人的偏好。
Cookie 就是服务器塞给浏览器的一个"小纸条"。上面写着你的名字、你喜欢的口味、你上次访问的时间。下次你再打开这个网站,浏览器就把这张小纸条递回去,服务器一看就知道:“哦,是你啊,上次那个喜欢抹茶饭团的人。”
技术上说,Cookie 就是服务器返回的一组键值对(key-value),存在你浏览器的硬盘上。每个 Cookie 最大 4KB。
Cookie 是怎么工作的?
整个过程其实就两步:
第一步:服务器给你发 Cookie 你在浏览器输入一个网址,服务器回复网页的同时,还附带了一句话:“请帮我记住这个用户的登录状态”。浏览器收到后,把这个信息存到你的电脑上。
第二步:浏览器自动送回 Cookie 之后你每次访问同一个网站,浏览器都会自动把之前存的那张"小纸条"递给服务器。服务器一看:“嗯,这个人已经登录过了,直接放行。”
没有 Cookie,你每刷新一次页面,就要重新登录一次。淘宝的购物车每次清空,微博永远不知道你喜欢看什么内容。互联网会变成一个极度"失忆"的地方。
Cookie 的类型
Cookie 不是一种东西,而是分好几种:
会话 Cookie(Session Cookie) 就像一张一次性手环。你进商场时拿到,出商场就作废了。关掉浏览器就自动删除,主要用于记录登录状态这类临时需求。
持久 Cookie(Persistent Cookie) 设定了一个过期时间,比如"三个月内有效"。就算你关了浏览器再打开,它还在。网站用它来记住你的偏好设置、记住你是否已经看过某个提示弹窗。
第一方 Cookie 只有当前访问的网站自己能读取。比如你在淘宝上设置的"夜间模式",京东看不到,百度也看不到。
第三方 Cookie 这是争议最大的类型。你在 A 网站看到一张"猜你喜欢"的广告,广告来自 B 公司。B 公司通过在你的浏览器里放一个 Cookie,就能追踪你在不同网站上的行为。Google 广告、Facebook 像素都是靠这个吃饭的。
现在 Safari 和 Firefox 已经默认阻止第三方 Cookie,Chrome 也在推进中。隐私保护是大趋势。
Cookie 的安全隐患
Cookie 虽然方便,但也可能被滥用:
Cookie 劫持 有人通过公共 WiFi 窃听你的网络流量,拿到了你的 Cookie。他就相当于拿到了你的"身份证",可以直接冒充你登录账号。所以 HTTPS 很重要——它加密了 Cookie 在传输过程中的内容。
XSS 攻击 恶意脚本注入网站,读取你的 Cookie 信息。如果网站没做好防护,你的登录凭证就会被偷走。
CSRF 攻击 黑客诱导你点击一个链接,利用你浏览器里已有的 Cookie,以你的身份完成操作(比如转账)。好在现代网站普遍用了 CSRF Token 来防御。
怎么保护自己?
- 重要网站一定要用 HTTPS
- 不要在公共 WiFi 下登录敏感账号
- 定期清理浏览器 Cookie
- 关闭不必要的 Cookie 授权
一句话总结
Cookie 就是网站放在你浏览器里的一个小便签,用来记住你是谁、你喜欢什么。它是互联网"有记忆"的基石,但也带来了隐私和安全问题。理解 Cookie,你就理解了 Web 身份认证的一半逻辑。