CSRF 中文是跨站点请求伪造。CSRF 攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,来达到攻击目的。
通过一个例子来看看 CSRF 的危害,假如用户 A 正常登录了某网上银行站点,这个时候用户 B 向用户 A 发送了一个网页图片,通过下面代码能够发现,这其实是一条银行转账请求:
<img src="http://www.bank.com/transfer?toUserID=userb&money=1000" />
因为浏览器已经记住了用户 A 的登录信息,浏览器也会认为转账请求是用户 A 正常发起的操作,所以当用户 A 点击了这个图片之后,他的银行账户就会减少 1000 块。
通过上面的例子,可以发现 CSRF 漏洞比较隐蔽并且危害也相当大,因此可以通过以下方法来预防:
1、尽量不允许 GET 请求,并且添加验证码,即使服务器设置了只允许 POST 提交,攻击者也可以通过模拟表单来达到相同目的。。
2、使用 Anti CSRF Token 来防御 CSRF 攻击。
