5月30日 21:29
SameSite Cookie 如何防护 CSRF?Strict、Lax、None 怎么选?
SameSite Cookie 防护 CSRF 的关键是让浏览器在跨站请求里少带或不带 Cookie。CSRF 成立,是因为用户登录后,攻击站能诱导浏览器向目标站发请求,而浏览器会自动附带登录 Cookie。SameSite 改变的就是这个默认行为。
追问
Strict、Lax、None 怎么选?
Strict 最严格,适合后台、支付、改密等安全优先页面,但会影响从外部链接进入的登录体验。Lax 是多数业务默认选择;None 只给确实需要跨站携带 Cookie 的场景,并必须配 Secure。
SameSite=Lax 能完全替代 CSRF Token 吗?
不能。Lax 能挡住大量跨站 POST,但覆盖不了所有业务边界。资金、权限、账号安全仍应保留 Token。
SameSite=None 为什么必须配 Secure?
因为 None 允许跨站携带 Cookie,现代浏览器要求它只能在 HTTPS 下使用。少了 Secure,很多浏览器会拒收。
子域名之间算跨站吗?
通常不算。a.example.com 和 b.example.com 在 SameSite 语义下属于同站,因此子域名安全会影响整体站点。
写段配置
httpSet-Cookie: sid=abc; Path=/; HttpOnly; Secure; SameSite=Lax Set-Cookie: admin_sid=def; Path=/admin; HttpOnly; Secure; SameSite=Strict