csrf 全称跨站请求伪造(Cross-site request forgery),指的是攻击者携带网站cookie,冒充用户请求的攻击行为。
与 xss攻击 的区别
xss攻击主要指网站被攻击者利用漏洞恶意注入脚本并执行,是一种注入类攻击;csrf 描述的是攻击者携带cookie冒充用户的请求行为,它们属于两种不同维度上的分类。
可以预想的是,如果 xss攻击的执行脚本包含请求服务器的行为,其也会携带用户cookie达到冒充用户请求的行为,这时候也属于 csrf攻击,不过我们一般称这样的情况为 xsrf攻击。
经典的csrf攻击过程
- 用户C打开a网站,向服务器A发送请求进行登录
- 登陆验证通过,服务器返回cookieA
- cookieA被保存在浏览器中,生命周期默认为浏览器关闭
- 在浏览器未关闭的情况下(A域名的cookie还在),用户被攻击者诱导打开b网站
- 在网站b中,向服务器A发送跨域请求
- 在网站b的请求中浏览器为其自动携带上了服务器A的cookie
- 服务器A分析请求cookie得到此请求为用户C发起,正确处理网站b的请求
需要明确的是,浏览器设置和携带cookie是根据请求中服务器的域名来设置和获取的,而非请求所在网站域名。所以,用户首次在网站a请求服务器A得到的cookie对应服务器A的域名,在网站b中再次请