概述
跨站请求伪造(Cross-site request forgery,CSRF)是一种攻击,它强制终端用户在当前对其进行身份验证后的web应用程序上执行非本意的操作。
CSRF攻击的主要目的在伪造更改状态(修改密码、转账等)的请求,而不是盗取数据,因为攻击者无法查看对伪造请求的响应。借助社工的一些帮助(例如通过电子邮件或聊天发送链接),攻击者可以诱骗用户执行攻击者选择的操作。
CSRF也被称为One Click Attack 或者 Session Riding ,通常缩写为 CSRF或者XSRF,是一种欺骗受害者提交恶意请求的攻击。它继承了受害者的身份和特权,代表受害者执行非本意、恶意的操作。
危害:
如果受害者是普通用户,则成功的CSRF攻击可以强制用户执行状态更改的请求,例如转义资金,更改其电子邮件地址等。
如果受害者是管理账户,CSRF可能会危及整个web应用程序。
利用CSRF(常存在于密码修改、账号添加等处),攻击者可以盗用你的身份,以你的名义发送恶意请求。 你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。
原理
CSRF(跨站请求伪造) 是一种欺骗用户在当前对其通过了身份验证的web服务器上执行非本意操作的一种攻击手法。攻击者借助用户的身份,向服务器发送恶意请求。
简单来说,攻击者利用目标用户的身份,以目标用户的名义执行某些非法操作。
例如:用户用浏览器访问受信任网站A,输入用户名及密码进行登录,用户的用户信息验证通过后,网站A会返回一个cookie信息到浏览器。用户没有退出在当前浏览器的登录,并用当前浏览器访问了攻击者提前写好的假网站B,网站B在收到请求后返回攻击性代码,要求访问网站A,而浏览器携带用户cookie信息则会向网站A发出请求,此时网站A并不知道请求是由恶意网站B发出的,所以网站A会根据用户的cookie信息以用户的身份进行处理,导致网站B的恶意代码被执行。
![](https://img-blog.csdnimg.cn/img_convert/f43542eac6d338bb1737becab9073c25.png)
攻击成功的前提:
用户已经登录了网站A,并记录了cookie信息
用户在没有退出登录网站A的前提下,也就是cookie信息生效的情况下,用同一浏览器访问了攻击者提供的恶意网站B,而网站B则要求访问网站A
网站A未做任何CSRF防御
与XSS漏洞的区别:
CSRF看起来像跨站脚本XSS,但与XSS不一样,XSS利用的是站点内的信任用户,而CSRF则是伪装成收信任用户请求受信任的网站进行利用。与XSS漏洞相比,CSRF不太常见,也比较难以防范,所以CSRF被认为比XSS更具危险性。