摘要:
与XSS有本质的区别>>XSS可以是CSRF的一种实现攻击的手段
XSS是跨站脚本攻击 漏洞的原理不同
XSS与CSRF有什么联系XSS可以是CSRF的一种实现攻击的手段,但是实现CSRF攻击不只XSS来实现
一、什么是CSRF
是一种挟制用户在当前已登录的Web 应用程序中,执行非本意操作(HTTP请求)的方法。
攻击者盗用了你的某个网站的身份,以你的名义发送恶意请求。
漏洞原理>>
简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求是用户自愿发送的。
会话控制是通过cookie验证的
例:>>
客户端打开网上银行
同时又打开一个含有执行请求代码的网站~
正常页面下所执行的转账交易请求
如何挟持用户>>
同源策略,当我们去访问一个网址的时候,浏览器会检查它的cookie里有没有该网址同一个域下的cookie信息,如果同一个域下有cookie,就会把这个cookie发送到服务器>>只要在同源的,就会发送cookie信息
如何让用户执行非本意操作>>
其实不能挟持用户,但是我们可以挟持用户的浏览求发送任意的请求。
为什么说正常业务中,使用POST 请求,而攻击时,发送的是get 也能完成转账呢?
跟PHP数组有关系因为$_REQUEST 预定义超全局数组>>ta 能够接受GPC(get、post、cookie)传递过来的参数
回放攻击流程
二、CSRF利用前提条件
一下情况你不能保证不会发生:
CSRF的分类>>
get请求
利用那个img标签的src属性
post请求
隐藏表单,自动提交,利用的是js
三、漏洞的防御
从漏洞原理来看>>
关键操作增加验证码(比如说支付密码等)
验证referer (也就是验证上一个页面求情的来源,但是可以伪造,因为referer来自于客户端,会增加成本不会根本解决)
验证token(每请求一个服务会给你一个令牌放到页面表单或这cookie里,对服务进行验证)用php可以实现
从漏洞利用前提条件来看>>
用户养成访问一个网站之后,点击退出账户的习惯