CSRF(Cross Site Request Forgery),跨站请求伪造, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

原理

一个简易的假设如下,B 站伪造 A 站请求。

  1. 用户使用浏览器访问 A 网站并登录;
  2. 登录成功后,网站 A 产生 Cookie 信息并返回给浏览器;
  3. 此时(A 站产生的 Cookie 存在时)访问 B 网站;
  4. B 网站存在恶意代码(<img src="A 站支付请求" />);
  5. CSRF 成功(通过 B 站发送 A 站请求达到某些目的)。

条件

  • 未进行请求来源校验;
  • Token 未进行动态化处理。

防御

  • Referer 检测:请求头中 Referer(用来记录请求来源地址) 值检测。
  • Token 校验(每次请求 Token 都在变,黑客无法获取可用 Token)
    • 请求参数中添加随机数(随机数可以存取在 session 中)
    • 请求头中添加自定义属性
    • jwt(Json Web Token)