1. CSRF 原理与防御(CSRF Token/双重提交 Cookie/SameSite 协同)
请详细说明 CSRF(跨站请求伪造)攻击的原理,以及 CSRF Token、双重提交 Cookie(Double Submit Cookie)与 SameSite 三种防御手段各自的机制与协同关系?
- CSRF 攻击的原理(利用浏览器自动携带 Cookie 的机制)
- CSRF Token 的相互校验流程
- 双重提交 Cookie 与 SameSite 的适用场景
CSRF 攻击利用的是"浏览器会自动把目标站点的 Cookie 随请求一起发送"这一特性,攻击者诱导已登录用户在不知情的情况下向目标站点发起伪造请求(如转账、改密、发帖),因为请求携带了有效会话 Cookie,服务端无法区分是用户主动操作还是攻击者伪造。核心防御手段:一是 CSRF Token,服务端在表单或请求中下发随机 Token,并存储在 Session 中,请求提交时服务端比对表单 Token 与会话 Token 是否一致,攻击者无法读取目标站点的 Token 因而无法伪造;二是双重提交 Cookie,服务端把 Token 同时写入一个 Cookie 和请求参数/头,校验两者是否一致,因为 CSRF 攻击无法跨域写入目标站点的 Cookie,这种方式无状态、无需 Session 存储;三是 SameSite 属性,设置 Cookie 的 SameSite=Strict 或 Lax 后,浏览器在跨站请求时不再携带该 Cookie,从源头阻断。工程上三者协同:SameSite 作为第一道防线,CSRF Token 作为纵深防御,双重提交 Cookie 适用于无状态/分布式场景。注意 SameSite=None 需要 Secure,且老浏览器兼容性需考虑。
本题考察对 CSRF 本质(浏览器自动携带 Cookie)和三类防御机制的理解。关键要回答"为什么 Token 能防 CSRF"(攻击者读不到目标站点的 Token)与"SameSite 为何能防"(跨站不携带 Cookie)。协同关系体现纵深防御思想。