文章分类

相关文章

背地里搞你的攻击:CSRF(跨站请求伪造)

分类:网络安全     发布:2017-01-09     来源:本站     浏览:1053 次

今天聊的这个攻击也是大家耳熟能详的,叫做跨站请求伪造,英文名叫Cross-Site Request Forgery。这个攻击虽然大家都听说过,但是却是防不胜防。你即使今天防住了,说不定哪天上一个新功能,就又出现了。 

1、原理 

说这么多,我们还是先来看看这个攻击的原理,知道里原理,自然就知道怎么去防范他。所谓的跨站,自然要有至少两个网站;所谓请求伪造,自然要有另外的用户被利用。所以,这里的角色一共有四个。攻击者 + 被利用的用户 + 网站A + 网站B。 

A、第一步:埋下祸根

 

这里有一个网站A,他提供一个功能就是发贴,而且贴子里面能够带图片链接,或者点击链接。注意:这里一定是发链接,而不是本地上传图片。 

与此同时,网站B有一个提交的接口,但是却没有遵循标准HTTP的Get和Post要求,采用了Get方式来提交。比方说,这个接口叫做:B.com/post?content=xxx 

这时候,攻击者就伪造了一个网站B的提交链接,在网站A上发了个贴子,贴子里的图片(或者链接)的地址,就是网站B的提交链接。 

做完这一步,攻击者就播完种子了,等待鱼儿上钩。

B、第二步:不知不觉就被搞了

 

当普通用户访问A.com的这个贴子的时候,<img>标签就会自动加载网站B的post地址。这个时候,就相当于这个用户在不知情的情况下,就访问了网站B的提交接口。如果是<a>标签,则需要用户手动去点击一下这个链接。 

如果B网站不需要登录,或者用户恰好登录过B这个网站,已经有登录的token放到cookie里了。这个时候,悲剧就会发生…… 

a、如果网站B是一个类似银行这样的财务网站,而post又是一个类似转账这样的接口,那对于用户来讲,就…… 

b、如果网站B是一个论坛,而网站A又是一个流量超大的网站,那对于网站B来讲,就可能瞬间被挤垮…… 

c、如果网站B是一个投票活动网站,那这个投票就被人轻松的操纵了…… 


2、防范 

好了,刚刚我们讲了整个的一个原理,那接下来,我们就一步步的讲讲如何来防范这样的攻击。 

A、如果你是网站A:请不要给攻击者留下可乘之机 

虽说网站A本身没有恶意,但是他却充当了攻击助手的角色。所以,如果你是网站A的话,你需要做的是,堵住漏洞之源。 

a、最好不要允许贴链接,特别是图片链接。因为第三方图片链接地址,你是无法保证有效性的。最好的方式,就是提供上传功能,所有的东西都控制在你手里。而即使是上传的图片,也要做图片有效性的验证,避免被人植入代码,造成服务器被攻击; 

b、如果非要允许贴图片链接,也要验证图片的有效性,并拷贝到本地服务器。比如新浪微博就支持第三方app提交图片链接。但是,他一定会把第三方的图片拷贝到他的服务器上。以保证图片本身是OK的。不然,如果第三方把图片的内容一换,给个302跳转,我们又SB了; 

上一篇:2016年年终总结

下一篇:基于页面的攻击:XSS(跨站脚本攻击)