CSRF漏洞原理
CSRF被叫做跨站请求伪造,该怎么理解这句话呢,比如 用户a在浏览器登录了账号,当他发送登录请求时候,服务器验证了账号密码,会返回给一个身份信息存放在cookie里面,浏览器保存,那么以后用户访问服务器带着这个cookie就行了。那么怎么产生攻击的呢,是用户在已经登录的状态下,访问了一个恶意的网站,带浏览器保存的cookie值向服务器发送了恶意请求,服务器会以为是用户的请求,其实这是用户不知情的请求。垮了两个站,一个是用户登录实际网站,一个是攻击者恶意构造网站,所以称作跨站请求伪造。
满足条件:
1.用户的登录了受信任的A网站,生成身份验证cookie值
2.不退出A网站访问了恶意网站B网站。
可能有的人就问恶意网站如果构造呢,这也是这个漏洞实现的一个需要考虑的地方.
具体流程:
首先张三在一个银行上有一个账户,她向李四转账1000元,那么向银行网站发送请求,请求如下 http://bank.hello/draw?moeny=zhangsan&amount=1000&for=lisi,同时攻击者小明在该网站也有账号,知道转账请求如上,所以攻击者构造了一个恶意网站,在张三登录网站之后,并且没有关闭情况下,诱导受害者点击图片,或者是一个链接,该恶意网站访问会发送一个请求http://bank.hello/draw?moeny=zhangsan&amount=1000&for=xiaoming,也就是说张三向小明转账1000元,因为这时张三还登录银行网站,身份认证信息cookie没有失效,银行会认为这是张三用户发送的一个正常请求,所以会执行命令转账功能。一般完成这个攻击通常需要搭配xss漏洞,需要在登录银行网站后进行弹窗,鼠标点击链接啊等等诱导用户点击。同时你还得知道一个敏感操作的一个请求url,不然怎么构造网站呢。
漏洞防御
CSRF防御有很多方式,每种方式各有利弊,目前有