# Cookie

有关 Cookie 安全的问题

有关 SameSite (opens new window) 问题

# SameSite

三个属性:

  • Strict (严格)

  • Lax (松懈)

  • None (无)

# Strict

将完全禁止第三方 Cookie,跨站点时候,不会发送 Cookie,只有当前网页 URL 与请求目标一致时才会带上 Cookie

也就是 同站检查 的意思。

Set-cookie:CookieName=CookieValue; SameSite=Strict

这个 Strict 过于严格,导致很多子链接跳转都被不带 cookie

# Lax

大多数是否,不发送第三方 Cookie,除了导航到目标网站的 Get 请求。

 Set-cookie: CName=CValue; SameSite=Lax

导航到目标的 Get 请求,有三种情况,a 链接,预加载,get 表单。

请求类型 实例 正常情况 Lax
a 标签连接 <a href="">...</a> 发送 发送
预加载 <link rel="prefetch" href="">/ 发送 发送
GET 表单 from method="GET" actions="">...</from> 发送 发送
POST 表单 from method="POST" actions="">...</from> 发送 不发送
iframe <iframe src=""></iframe> 发送 不发送
AJAX $.get(...) 发送 不发送
Image <img src="" 发送 不发送
Svg <svg src="" (未知) (未知)

LaxStrict 基本杜绝 CSRF 攻击

# None

无效设置

Set-Cookie: name=123;SameSite=None

有效的设置,即 Cookie 只能通过 HTTPS 协议发送。

Set-Cookie: name=123;SameSite=None;Secure

# 引用