5月30日 01:00

Cookie 的 Secure、HttpOnly、SameSite 有什么区别?如何防止被窃取?

防止 Cookie 被窃取,核心是把“传输、读取、跨站发送、作用域”四件事管住:Secure 只允许 HTTPS 传输,降低中间人窃听风险;HttpOnly 禁止 JavaScript 读取,降低 XSS 偷 Cookie 的风险;SameSite 控制跨站请求是否带 Cookie,缓解 CSRF;DomainPath 缩小发送范围。敏感登录态建议服务端设置 Cookie,不把 token 暴露给前端脚本,并优先使用 __Host- 前缀来避免子域覆盖。

追问

Secure 和 HttpOnly 有什么区别?

Secure 管传输,只保证 Cookie 不走普通 HTTP;HttpOnly 管读取,防止 document.cookie 直接拿到敏感值。

Path 能当安全边界吗?

不能。Path 主要控制发送范围,不应把它当权限隔离。真正的权限判断必须在服务端做。

为什么推荐 __Host- 前缀?

它要求 SecurePath=/,且不能设置 Domain,能避免子域种下同名 Cookie 覆盖主站会话。

先看是否缺 HttpOnlySecure,再查 XSS、第三方脚本、过宽 Domain,以及登录后 sessionId 是否轮换。

写段代码

http
Set-Cookie: __Host-token=abc; Secure; HttpOnly; SameSite=Strict; Path=/; Max-Age=1800
标签:Cookie