乐闻世界logo
搜索文章和话题

什么是 SameSite Cookie?它如何防止 CSRF 攻击?

3月6日 21:29

SameSite Cookie 属性用于控制跨站请求时是否发送 Cookie,是防止 CSRF(跨站请求伪造)攻击的重要安全机制。

SameSite 的三个值

  1. Strict(严格模式)

    • 完全禁止跨站请求携带 Cookie
    • 最安全,但用户体验较差
    • 示例:Set-Cookie: token=xyz; SameSite=Strict
    • 使用场景:银行、支付等高安全要求的网站
  2. Lax(宽松模式)

    • 允许部分安全的跨站请求携带 Cookie
    • 平衡安全性和用户体验
    • 示例:Set-Cookie: token=xyz; SameSite=Lax
    • 允许的请求:GET 请求、顶级导航、表单 GET 提交
    • 不允许的请求:POST 请求、iframe、图片、脚本等
  3. None(允许跨站)

    • 允许所有跨站请求携带 Cookie
    • 必须配合 Secure 属性使用
    • 示例:Set-Cookie: token=xyz; SameSite=None; Secure
    • 使用场景:第三方登录、跨域 API 调用

CSRF 防护原理

  • 攻击者无法在恶意网站发起的请求中携带目标网站的 Cookie
  • 即使用户已登录目标网站,跨站请求也无法通过身份验证

浏览器兼容性

  • Chrome 51+、Firefox 60+、Safari 12+、Edge 79+
  • 旧版本浏览器默认行为相当于 None

最佳实践

  • 一般网站使用 SameSite=Lax
  • 高安全要求使用 SameSite=Strict
  • 需要跨域时使用 SameSite=None; Secure
  • 结合 CSRF Token 提供双重防护
标签:Cookie