跨站请求伪造(Cross-site request forgery),攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
一. CSRF攻击一般流程:
- 受害者登录a.com,并保留了登录凭证(Cookie)。
- 攻击者引诱受害者访问了b.com。
- b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。
- a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
- a.com以受害者的名义执行了act=xx。
- 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作。
二. CSRF攻击特点
- 攻击没有窃取用户信息,而是冒充用户向被攻击网站发出操作请求。
- CSRF一般是跨域的,被攻击网站无法阻止。
- 跨站请求可以用各种方式:图片URL、超链接、CORS、Form提交等等。部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪。
三. CSRF攻击防范
-
1. 同源策略
因为CSRF大多是发生在跨域情况下,同源策略可以阻止不受信任的域名访问。
浏览器请求头两个字段用于识别域名Origin
Referer
- 2. Token
- 3. 双重Cookie验证
本文参考自美团技术团队文章https://www.freebuf.com/articles/web/186880.html