CSRF(Cross Site Request Forgery,跨站请求伪造)攻击,是一种利用用户已登录的身份去发起跨站请求的攻击方式。攻击者通过某种方式获取到网站的某个页面或接口,把恶意的操作脚本插入其中,当用户访问该页面时,恶意脚本会自动执行,将用户的浏览器发送的请求伪装成针对目标网站的请求进行发送。
攻击步骤如下:
攻击者构造请求,设置好目标网站的地址和参数。
攻击者将请求通过电子邮件、QQ、微信等方式欺骗用户访问页面或点击链接,或通过XSS等方式注入恶意代码。
用户的浏览器接收到请求并自动执行恶意脚本,发送请求到目标网站并携带了攻击者构造的请求参数。
目标网站接收到请求后,由于是用户已经登录的身份发起的请求,服务器会对请求进行验证并执行操作。
攻击原理图如下:
CSRF攻击产生的根本原因,是由于Web应用程序的设计和实现上存在缺陷,即缺乏有效的身份验证和请求判断验证措施。这种缺陷给攻击者可乘之机,透过用户身份欺骗服务器授权,执行攻击者选取的危害操作,从而对用户个人信息、账户财产等造成损失。