CSRF 令牌
CSRF 令牌 是什么?
CSRF 令牌嵌入表单或请求头中、每个会话唯一且不可预测的值,使服务器能确认状态变更请求来自本站页面。
CSRF 令牌是对抗跨站请求伪造的标准防御。服务器生成随机值,与用户会话绑定,并嵌入 HTML 表单或通过自定义请求头发送。每次状态变更请求都将提交的令牌与期望值比对,不一致则拒绝。常见变体包括同步令牌模式(服务端状态)、双重提交 Cookie(无状态)与 OWASP HMAC 模式。现代应用应同时使用 CSRF 令牌、SameSite=Lax 或 Strict Cookie、自定义请求头、Origin/Referer 校验以及严格 CORS。只通过 JS 调用且使用 bearer 令牌的 API 不需要 CSRF 令牌,但仍需防重放控制。
● 示例
- 01
表单内的隐藏字段 <input type="hidden" name="csrf" value="a8f1...">。
- 02
X-CSRF-Token 请求头在服务器侧与会话密钥校验。
● 常见问题
CSRF 令牌 是什么?
嵌入表单或请求头中、每个会话唯一且不可预测的值,使服务器能确认状态变更请求来自本站页面。 它属于网络安全的 身份与访问 分类。
CSRF 令牌 是什么意思?
嵌入表单或请求头中、每个会话唯一且不可预测的值,使服务器能确认状态变更请求来自本站页面。
CSRF 令牌 是如何工作的?
CSRF 令牌是对抗跨站请求伪造的标准防御。服务器生成随机值,与用户会话绑定,并嵌入 HTML 表单或通过自定义请求头发送。每次状态变更请求都将提交的令牌与期望值比对,不一致则拒绝。常见变体包括同步令牌模式(服务端状态)、双重提交 Cookie(无状态)与 OWASP HMAC 模式。现代应用应同时使用 CSRF 令牌、SameSite=Lax 或 Strict Cookie、自定义请求头、Origin/Referer 校验以及严格 CORS。只通过 JS 调用且使用 bearer 令牌的 API 不需要 CSRF 令牌,但仍需防重放控制。
如何防御 CSRF 令牌?
针对 CSRF 令牌 的防御通常结合技术控制与运营实践,详见上方完整定义。
● 相关术语
- attacks№ 239
跨站请求伪造(CSRF)
一种 Web 攻击,迫使已认证用户的浏览器向存在漏洞的站点发送非预期请求,在用户毫不知情的情况下执行状态变更操作。
- appsec№ 961
SameSite Cookie
控制浏览器在跨站请求中是否携带 Cookie 的属性,取值为 Strict、Lax、None,主要用于缓解 CSRF。
- identity-access№ 1020
会话令牌(Session Token)
认证成功后签发的不透明标识符,客户端在每次请求时回传,使服务器能查询用户的会话状态。
- identity-access№ 1018
会话管理
用于颁发、维护、刷新和吊销已认证会话的一组控制措施,将用户身份与后续请求绑定,直至注销或过期。
- appsec№ 983
Secure Cookie 标志
告诉浏览器仅在 HTTPS 上发送该 Cookie 的属性,防止其在网络上以明文传输。
- appsec№ 223
CORS(跨源资源共享)
由浏览器强制执行的机制,允许服务器有选择地放宽同源策略,使一个源上的 JavaScript 可以读取另一个源的响应。