CSRF 简介

CSRF 是什么?

CSRF(Cross-site Request Forgery)跨站请求伪造,缩写为:CSRF/XSRF。 也被称为:one click attack/session riding。

攻击原理

利用了 web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

例子
背景:有网站 a, b
1. a网站通过标签 <img src="http://b?xx=xx&x=x"> 构造了一个 get 请求,这个请求为 b 的地址并且携带了一些请求参数
2. 浏览器发起请求的时候看到的域名是 b 的域名就会携带 b 网站下的 cookie
3. 如果 cookie 里携带了一些认证信息,b 网站就会认为这是一个正常的请求从而导致了一些安全问题

该攻击可以实施的点在于:

1. 浏览器在发起 get 请求的时候会默认携带该请求域名下的 cookie
2. 一般而言浏览器有同源策略的限制,但是通过标签 <img src=""> 或者 script 所构造的请求不会有这个限制
3. b 网站允许 get 请求去执行一些操作

防御措施

  1. 检查 Referer
  2. 添加校验 Token