CSRF的攻击与防御
一、CSRF简介
CSRF(Cross-Site Request Forgery,跨站点伪造请求)是一种网络攻击方式,大体的意思就是黑客利用的你身份去伪造一个真实的请求,发送给服务器。比如用你的名字购买商品、发送 邮件、盗取你的账号等。
二、CSRF漏洞的原理
(M$V2XONOB@VR19Z79EAEA4.jpg
简单的身份验证只能保证请求发自某一个用户的浏览器,去不能保证请求本自身是用户自愿发出来的。
如上图所示:
1.用户C :浏览并登陆信任网站Web(A);
2.web A (受信任的网站):验证通过,在用户处(C)产生A的Cookie;
3.用户C在没有登出网站A的情况下,访问了危险网站Web(B)
4.B要求访问第三方站点(A),发出一个请求(requset)给用户(C)——
5.根据Web(B)恶意网站的请求,游览器带用户C产生的cookie访问Web(A)受信任的网站并在用户A毫不知情的情况下做恶意操作,如转账 购买商品等.....
三、CSRF利用前提条件
1.登录信任网站A,并在本地生成Cookie。
2.在不退出的情况下,访问危险网站B。
不满足以上两个条件中的一个,就不会收到CSRF的攻击。
四、CSRF的防御
1.检查HTTP头部Refef信息,这是防范CSRF的最简单实现的一种方法。
2.使用一次性令牌,方式是对于GET请求,在URL里面加入一个令牌。对于Post请求,在隐藏域中加入一个令牌,
3.使用验证图片,这种方法作用是对于机器人暴力攻击的防止。
五、CSRF 攻击的方法
1.对于GET 请求的 CSRF 漏洞的攻击方式
GET请求方式使用的频率最高,隐式的 GET 请求,例如 <img> <script><frame><iframe>,在页面中引入上述页面元素,并且设置 SRC 属性就能在用户未知的情况下发出一个 GET 请求到想去攻击的网站。
以 IMG 标签为例,攻击者可以通过在图 1 中的标记-5、标记-6、标记-2、标记-4 的途径发起攻击。这种攻击的特征是无明显提示,但是已经发出一个具有完整合法的用户请求。
1 <img src=http://UserSite/admin/deletepage?id=74NBCDSEFG/>
2.对于POST 请求的 CSRF 漏洞的攻击方式
对 CSRF有一种理解是把 GET 改为 POST 请求就认是可以防止被攻击实际上是一种错误的理解,通过使用 <iframe> 一样可以完成一个隐式的 CSRF 攻击,具体脚本写法如下 ;
图片.png
清单 2. IFrame.html
1 <IFRAME src=./frame1.html width=0 height=0></IFRAME>
这段代码通过脚本构造一个表单提交,通过 IFRAME 加载页面自动执行本例,IFRAME 宽高属性设置成零的目的是为了达到隐式攻击的效果,JAVASCRIPT 只对窗口的大小有不成文的规范,宽高不能小于 50 像素点,但是对 iframe 并没有要求,这为隐式的跨域 Post 攻击提供了一个量好的途径。写成脚本的形式并不是说明只要被检测的站点没有脚本注入就没有任何问题,POST 隐式攻击方式一样可以通过第 3 方。
六、关于CSRF的问题小结
1.CSRF和XSS之间的区别?
CSRF:跨站请求伪造,是一种要挟用户在当前已登录的Web应用程序上执行非本意的操作的攻击手法,
XSS: 跨站脚本,是一种网站应用程序的安全漏洞攻击,是代码的一种,它允许恶意用户将代码注入到网页上,其他用户浏览时会受到影响。(XSS跟CSRF不同的是它倾向与sql注入针对的是服务器或所有用户,获取用户的cookie)
2.CSRF是怎么要挟用户的?
利用用户现在登录网站,发送一个恶意的链接诱导用户访问,从而得到用户登陆网站的cookie做恶意的操作。
3.如何利用brup构造CSRF表单?
点击Submit按钮之后构造的CSRF触发成功。
网友评论