http通信鉴权(三)基于 Session + CSRF Token 的 Cookie 认证

一、介绍

1、简介

这也是一个非常典型的 Web 会话认证方式,不是 OAuth,也不是 JWT,而是: 基于 Session + CSRF Token 的 Cookie 认证(Spring / Java 系生态最常见)

项目 是否
Session-based Auth
Cookie Auth
CSRF Protection
JWT
OAuth2

2、示例

XSRF-TOKEN=******; SESSION=******

二、组成

XSRF-TOKEN = e1a29ed4-8850-4e48-8ac5-833ccfad1899

SESSION = ljU0ZDa2OTMtMTg2gS00njE2LTk0MDEtOGUyMuYxNTE3MTZa

1、SESSION(核心认证凭证)

这是服务端 Session ID,登录成功后由服务器生成。

  • 存在:内存 / Redis / DB

  • Cookie 里只存 sessionId

  • 每次请求:Cookie: SESSION=xxxx

  • 服务端用 sessionId 找用户信息,这就是真正的"你是谁"

2、XSRF-TOKEN(防 CSRF)

这是 CSRF 防护 token(不是身份认证),

  • 用来防止:跨站请求伪造(CSRF)

  • 常见于:Spring Security Angular / Vue

工作机制
  1. 服务端生成一个随机 token

  2. 放到 Cookie(XSRF-TOKEN

  3. 前端每次 非 GET 请求时:

    从 Cookie 读,然后放到 Header:X-XSRF-TOKEN: e1a29ed4-8850-4e45-8ac5-833ccfad1896

  4. 服务端校验 Header 和 Cookie 是否一致

📌 它不代表登录态,只是"你是本站页面发的请求"

**三、**结合Playwright

复制代码
// 登录后
BrowserContext context = browser.newContext();
// Cookie 会自动带
复制代码
String xsrf = context.cookies().stream()
    .filter(c -> "XSRF-TOKEN".equals(c.name))
    .findFirst()
    .map(c -> c.value)
    .orElse(null);

2、API 请求时带 Header

复制代码
page.request().post("/api/xxx",
  RequestOptions.create()
    .setHeader("X-XSRF-TOKEN", xsrf)
);

3、复用登录态(自动化测试常用)

推荐做法:storageState

复制代码
context.storageState(
  new BrowserContext.StorageStateOptions()
    .setPath(Paths.get("state.json"))
);

下次:

复制代码
browser.newContext(
  new Browser.NewContextOptions()
    .setStorageStatePath(Paths.get("state.json"))
);
相关推荐
DsirNg5 小时前
凭证不是登录态:从攻击面重做浏览器认证设计
oauth·xss·csrf·token·cookie·认证授权·web 安全
xx~t9 小时前
嵌入式——Linux软件编程——网络1
linux·c语言·网络·vscode·网络协议
MyFreeIT11 小时前
Let‘s Encrypt SSL 製作免費證書
网络协议·https·ssl
爱研究的小梁12 小时前
打破时延‑带宽悖论|乾元通 QMP‑UDP,为无人载具提供低延时高带宽原生通信方案
网络·网络协议·udp
xie0510_12 小时前
TCP socket
linux·网络协议·tcp/ip
恋恋西风13 小时前
TCP 三次握手 / 四次挥手 讲解
网络·网络协议·tcp/ip
00后程序员张13 小时前
Android证书绑定抓包失败?Android SSL Pinning绕过实战指南
android·网络协议·计算机网络·网络安全·adb·https·ssl
比兔代理13 小时前
动态 IP 代理深度讲解:IP 地址轮换机制与会话保持方案
网络·网络协议·tcp/ip
一直C14 小时前
Linux应用软件编程|TCP协议与Socket全套编程(三次握手、四次挥手、报文头部、核心机制)
linux·网络协议·tcp/ip·wireshark·vim·visual studio
隔窗听雨眠15 小时前
大模型实时通信协议深度对比:SSE、WebSocket与gRPC的选型指南与实战解析
网络·websocket·网络协议