SameSite Cookie

SameSite是浏览器针对Cookie的一种安全属性,主要用于防御CSRF攻击和控制跨站Cookie的发送行为,它的核心是告诉浏览器:在什么情况下允许跨站点请求携带当前Cookie

1.SameSite 的三种模式

(1)SameSite=Strict(严格模式)

  • 行为 :

    Cookie 仅限同站请求 (即完全一致的域名)携带,任何跨站请求均不发送。

  • 适用场景 :

    高敏感操作(如银行转账、修改密码),确保请求绝对来自本站。

  • 示例:

    http

    ini 复制代码
    Set-Cookie: sessionId=abc123; SameSite=Strict; Secure
    • 用户从 https://social.com 点击链接到 https://bank.com,浏览器 不会携带 bank.com 的 Cookie。

(2)SameSite=Lax(宽松模式,默认值)

  • 行为 :
    • 允许安全的跨站GET请求(如导航跳转,预加载)携带cookie
    • 阻止跨站POST请求,ifram嵌入等非安全请求携带Cookie
  • 适用场景 :
    大多数网站:平衡安全性和用户体验
  • 示例: Set-Cookie: sessionId=abc123; SameSite=Lax; Secure
markdown 复制代码
-   用户从 `https://news.com` 点击链接到 `https://shop.com`,浏览器 **会携带 Cookie**。
markdown 复制代码
-   但如果是 `news.com` 向 `shop.com` 发起 AJAX POST 请求,**不会携带 Cookie**。

(3)SameSite=None(禁用限制)

  • 行为 :

    Cookie 允许所有跨站请求携带 ,但必须同时设置 Secure(仅限 HTTPS)。

  • 适用场景 :

    需要跨站共享 Cookie 的第三方服务(如嵌入的支付按钮、跨站单点登录)。

  • 示例:

    http

    ini 复制代码
    Set-Cookie: widget_session=xyz; SameSite=None; Secure
    • 用户访问 https://site-a.com 时,内嵌的 https://site-b.com 的 iframe 可以携带 Cookie。

2. SameSite 如何防御 CSRF 攻击?

CSRF 攻击原理

攻击者诱导用户在已登录的网站(如 bank.com)发起恶意请求(如转账):

html

xml 复制代码
<!-- 恶意网站 evil.com 的代码 -->
<form action="https://bank.com/transfer" method="POST">
  <input type="hidden" name="to" value="attacker">
  <input type="hidden" name="amount" value="1000">
</form>
<script>document.forms[0].submit();</script>

如果用户已登录 bank.com,浏览器会自动携带 Cookie,请求成功。

SameSite 的防护

  • 若 bank.com 的 Cookie 设置为 SameSite=Lax 或 Strict:

    • 跨站 POST 请求 不会携带 Cookie,攻击失效。
  • 但 SameSite=None 的 Cookie 仍需配合 CSRF Token 防护。

相关推荐
程序员大阳2 小时前
副队长CSS教程(30)–CSS Grid 实战:实现复杂自适应表单布局
前端·css·自适应·grid·表单
Csvn2 小时前
微前端实现
前端
Chrischaan2 小时前
做 AI 塔罗小程序时,我为什么不让大模型自己抽牌:一次上线复盘
前端
骑着蜗牛撵大象3273 小时前
LangChain 工具调用从声明到闭环:给智能体接上真实的手脚
前端
数据掘金3 小时前
百度统计后台页面数据异常?从手动调用时机开始排查
前端
hunteritself3 小时前
10 层 4K 实时剪辑,国产工作站进入广电制作核心
大数据·前端·人工智能·深度学习·transformer
踩着两条虫3 小时前
我在浏览器里“盖”了一个村:Vue + Three.js 大屏开发踩坑记
前端·vue.js·three.js
mbshqqb3 小时前
TypeScript基础教程之同步生成器
前端·javascript·typescript
嘟嘟同学和妮妮同学4 小时前
【升级】一个中国历史可视化站:皇帝时间线梳理、古代思想流派、诗词鉴赏 (2)
前端·html
暗夜行者之光4 小时前
LangGraph + MCP 实战:构建"自然语言查数据"的 ChatBI Agent
前端·后端