一、漏洞定义
CSRF(跨站请求伪造)是一种客户端攻击,又称为“一键式攻击”。该漏洞利用了Web应用程序与受害用户之间的信任关系,通过滥用同源策略,使受害者在不知情的情况下代表攻击者执行操作。与XSS攻击不同,XSS利用用户对特定网站的信任,而CSRF则利用了网站对用户网页浏览器的信任。
二、漏洞原理
从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤:
- 登录受信任网站A,并在本地生成Cookie。
- 在不登出A的情况下,访问危险网站B。
如果不满足以上两个条件中的一个,就不会受到CSRF的攻击。但不能保证以下情况不会发生:
- 登录一个网站后,在另一个标签页中打开并访问另外的网站。
- 关闭浏览器后,本地的Cookie不立即过期,上次的会话仍然有效。
CSRF是一种较难防御、又危险极大的漏洞。
关于HTTP GET和POST请求的区别: GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。GET方法通过URL请求传递用户的数据,数据直接显示在URL上;POST方法将数据放置在HTML表头内一起传送给服务器端。
CSRF的本质是可以携带Cookie进行身份伪造。攻击者通过伪装来自受信任用户的请求来利用受信任的网站。用户登录并访问了一个正常网站,登录成功后,网站返回用户的身份标识Cookie给用户。当用户访问恶意网站时,恶意网站强制用户向正