前端与浏览器 / 进阶
Cookie 安全边界:SameSite、HttpOnly 与 CSRF
解释 Cookie 的发送规则、安全属性、跨站与跨源差异,并给出会话 Cookie 和 CSRF 防护建议。
四个常用属性
HttpOnly 阻止 JavaScript 通过 document.cookie 读取,但浏览器仍会随匹配请求发送 Cookie;它降低会话被 XSS 直接窃取的风险,却不能让 XSS 失去操作当前页面的能力。 Secure 要求通过 HTTPS 发送;SameSite=Lax 通常适合普通会话,Strict 更保守,None 用于确需跨站发送且必须同时设置 Secure。 Path 和 Domain 控制发送范围,不是可靠的权限隔离机制。同一站点下不可信应用仍应使用独立主机。
__Host- 前缀要求 Secure、Path=/ 且不能设置 Domain,可减少子域覆盖 Cookie 的机会。服务端仍要轮换会话标识、限制有效期,并在退出时让服务端会话失效。
EXAMPLE / 01Cookie
Set-Cookie: __Host-session=opaque-id; Path=/; HttpOnly; Secure; SameSite=Lax; Max-Age=3600CSRF 防护需要服务端参与
SameSite 是第一道防线,但涉及跨站嵌入或旧客户端时仍需 CSRF Token。服务端还应校验 Origin 或 Referer,并确认 GET 不产生状态变更。 双重提交 Cookie 可用,但令牌必须不可预测并与会话正确绑定;框架内置方案通常更不容易配置错。
最后回到真实页面检查
会话安全还依赖服务端轮换、过期和撤销