XSRF-TOKEN
用于防止跨站请求伪造(CSRF 或 XSRF)攻击的原理在于,它为每个会话提供了一个唯一的、难以预测的 token。下面是使用 XSRF-TOKEN
来防止 CSRF 攻击的基本工作流程:
-
生成 Token:当用户登录到系统后,服务器会生成一个与用户会话关联的唯一 token,并将其作为 cookie 发送到客户端。
-
存储 Token:客户端浏览器将
XSRF-TOKEN
cookie 存储起来,并在之后的每个请求中自动附带这个 cookie。 -
将 Token 加入请求:在发送到服务器的每个非简单请求(例如 POST 请求)中,客户端应用程序还必须以某种方式(如请求头或表单字段)将该 token 包括进去。这通常由前端应用程序自动完成,例如 JavaScript 代码可以从 cookie 中读取 token 并将其添加到请求头中。
-
服务器验证:对于每个涉及潜在副作用的请求(例如修改、添加或删除数据的请求),服务器都会检查附带的
XSRF-TOKEN
是否与存储在服务端或客户端 cookie 中的 token 匹配。如果不匹配,请求被认为是非法的,并被拒绝执行。 -
阻止 CSRF 攻击:由于攻击者无法访问到目标用户的 cookie,因此他们无法获得
XSRF-TOKEN
的值。因此,即使攻击者能够诱使用户的浏览器对目标站点发起请求,由于他们不能在请求中包括有效的 token,所以该请求将被服务器拒绝。
通过这种方式,XSRF-TOKEN
可以确保只有拥有有效 token 的客户端才能执行敏感操作,从而保护了应用程序免受 CSRF 攻击的侵害。