CSRF的全名是Cross Site Request Forgery,翻译成中文就是跨站点请求伪造。
什么是CSRF呢?我们先看一个例子。
在介绍XSS Payload时那个“删除搜狐博客”的例子,登录Sohu博客后,只需请求这个URL,就能把编号为“156713012”的博客删除。
http://blog.sohu.com/manage/entry.do?m=delete&id=156713012
这个URL同时还存在CSRF漏洞,我们将尝试利用CSRF漏洞,删除编号为“156714243”的博客文件。这篇文章的标题是“test1”。
攻击者首先在自己的域构造一个页面:
http://www.a.com/csrf.html
其内容为:

使用了一个 标签,其地址指向了删除博客文章的链接。
攻击者诱使目标用户,也就是博客主“test1test” 访问这个页面:
该用户看到了一张无法显示的图片,再回头看看搜狐博客:
发现原来存在的标题为“test1”的博客文章,已经被删除了!
原来刚才访问 http://www.a.com/csrf.html 时,图片标签向搜狐发送了一次GET请求:
而这次请求,导致了搜狐博客上的一篇文章被删除。
回顾整个攻击过程,攻击者仅仅诱使用户访问了一个页面,就以该用户身份在第三方站点里执行了一次操作。这个删除博客文章的请求,是攻击者所伪造的,所以这种攻击就叫做“跨站点请求伪造”。
在CSRF攻击流行之初,曾有一种错误的观点,认为CSRF攻击只能有GET请求发起,因此很多开发者都认为只要把重要的操作改成只允许POST请求,就能防止CSRF攻击。这种错误的观点形成的原因主要在于,大多数CSRF攻击发起时,使用的HTML标签是、