2026年5月30日 01:00
Cookie 有哪些安全风险?如何防范 XSS、CSRF 和窃取?
Cookie 的主要风险有四类:XSS 读取 document.cookie、CSRF 借浏览器自动带 Cookie 发请求、HTTP 明文传输被中间人截获,以及 Domain/Path 配置过宽导致 Cookie 被子域或无关路径滥用。敏感 Cookie 应由服务端设置,并组合使用 HttpOnly、Secure、SameSite=Lax/Strict、短有效期和签名校验。注意:SameSite 能降低 CSRF 风险,但高风险写操作仍建议校验 CSRF Token 或 Origin/Referer。
追问
HttpOnly 能彻底防住 XSS 吗?
不能。它只是禁止 JavaScript 读取 Cookie,不能阻止脚本执行,也不能阻止恶意脚本发起带 Cookie 的请求。
SameSite=Lax 和 Strict 怎么选?
普通登录态多用 Lax,兼顾外部链接跳转体验;支付、后台管理等高风险场景可用 Strict。
Cookie 被篡改怎么办?
不要信任客户端值。服务端应对 Cookie 做签名或只存 sessionId,真实权限状态放服务端。
实际项目里最容易漏什么?
SameSite=None 忘记配 Secure,浏览器会拒绝或异常处理;另一个坑是把主站 session 设置到 .example.com,导致子域风险放大。
写段代码
httpSet-Cookie: __Host-session=abc; Path=/; Secure; HttpOnly; SameSite=Lax; Max-Age=3600