CSRF原理以及防护措施

2016-03-08 09:57杨家
电脑与电信 2016年3期
关键词:令牌表单攻击者

杨家

(广东省贸易职业技术学校,广东 广州 510507)

CSRF原理以及防护措施

(广东省贸易职业技术学校,广东 广州 510507)

CSRF依赖HTTP请求无状态的特性,借助带有强制被攻击者浏览器提交请求的HTML,从而达到攻击的目的。CSRF很难被捕捉,危害极大。本文将深入研究CSRF的工作原理以及有效的防护措施,努力把CSRF危害程度降到最低。

CSRF;捕捉;欺骗;防护;攻击

1 CSRF原理

1.1 认识CSRF

我们平时都是通过打开浏览器来登录相关网站,网站通过索取登录证书、设置cookies等方式,来为每个浏览器建立特定的上下文环境,也就是数据包的IP地址、标头、cookies,以及请求的链接等等。CSRF正是通过操纵浏览器对某个网站发出请求,而这种请求是在被攻击者和网站关系的上下文中进行的,但对于目标网站而言并没有收到任何来自攻击者的数据包。

用简单的话来讲,CSRF攻击迫使被攻击者的浏览器发出请求,被攻击者对此毫无所知,因此也无需被攻击者亲自发出请求。浏览器时时刻刻都在做用户不了解或是未批准的请求,如:图片、框架、脚本标签等等。CSRF的关键在于找到某个链接,当请求该链接时,会给被攻击者带来损失,如被攻击者的账户被泄露、所有的邮件都被转发到攻击者的邮箱等,这些都是用户难以接受的。

1.2 CSRF与钓鱼攻击的异同

CSRF不等同与钓鱼攻击,两者之间有一点微妙但却重要的差别:钓鱼攻击需要操纵用户,让用户亲自从浏览器提交一个请求;CSRF是用户正常浏览页面时,迫使浏览器提交请求,攻击者并没有真正获得浏览器的远程控制权,但对用户浏览器做了一些用户注意不到的事情。我们可以看看以下代码:

〈iframe src=”http://web.site/frame/html”〉

〈img src=”http://pictures.site/somecute”〉

〈script src=”http://rsources.site/browser”〉

这些都是自动发出请求的元素类型,事实上,Web页面包含数十甚至数百个在渲染页面时需要获取的资源,对于哪些域或哪些主机来加载这些资源(如图片、样式表单、JS代码、HTML)并没有限制,出于性能优化方面的考虑,网站通常会把诸如图片等静态内容放在内容分发网络上,其域名和访问者在浏览器导航栏中看到的域名完全不同。

1.3 CSRF攻击的方法

1.3.1 标签欺骗

(1)Image欺骗

首先,攻击者将数个〈img〉标签布置在尽可能多的网站中,标签的src属性包含了一个可疑的链接,在耐心的等待后,成功将被攻击者诱骗到了一个包含着上述〈img〉标签的网站。同时,攻击者可以使用CSS属性隐藏页面中的属性,使被攻击者无法看到它,即使被攻击者很小心,也不会注意到这个被更改的image元素。

(2)表单欺骗

在进行网站搜索时,被攻击者都会在某个表单字段中输入搜索项,点击“搜索”,然后查看结果,这实际上是迫使被攻击者的浏览器发出一个等效于提交搜索表单的请求,而且攻击者将一个特定的搜索项预置到表单中,并迫使被攻击者的浏览器提交它。因为表单默认的method属性是GET而不是POST之后,这更容易完成了。换句话说,搜索项是链接的查询字符串的一部分。

1.3.2 应用程序触发

伪造的请求不仅仅需要散布于页面中并等待WEB浏览器的访问,很多嵌入了WEB内容或能感知WEB的应用程序可以直接向目标网站发送请求,而不需要打开浏览器。诸如Microsoft office文档、PDF文档、FaLSH视频等等很多程序都能生成HTTP请求。如果文档或应用程序使用操作系统默认浏览器提交请求,那么它代表了一种向被攻击者传送伪造请求的有效攻击。如果浏览器被用来发送请求,无论是作为嵌入式对象或是通过aPI调用方式,该请求都很有可能包括了用户对目标网站的安全上下文。作为用户,需要将任何支持WEB的文档和应用程序都看作是WEB浏览器的扩展,但是它们可能与CSRF有关。

CSRF中“跨站请求”仅仅描述了WEB浏览器正常的、预期的行为,“伪造”才是漏洞,而且不会触发入侵检测系统、WEB应用程序防火墙或其他安全警告。也正因为如此,这种攻击很难被捕捉。

2 部署防护措施

跨站请求伪造的解决方案既涉及WEB应用程序,也涉及WEB浏览器。如何对网站输入进行过滤,对HTML注入攻击免疫,找到应对措施,并且进行部署,是我们对CSRF攻击防疫的主要工作内容,下面简单介绍几种有效的CSRF防护措施。

2.1 创建新的Origin请求标头

HTTP标头和WEB安全具有复杂的关系,请求的标头很容易被篡改,从而成为跨站脚本攻击、SQL注入攻击、依赖于标头值攻击等攻击的一种途径。为了抵御CSRF攻击,创建新的Origin请求标头,是降低被攻击风险的有效方法之一。

Origin在初始化时包含协议、主机号、端口号等信息,建立在安全性较高的浏览器上,它的值由浏览器设置,不会被HTML、JavaScript或其他插件修改。

支持HTML5的浏览器使用Origin标头来明确XMLHttpRequest对象发起的请求来自何处。

Origin标头可以判断是否信任来自不同域的请求。浏览器一般允许来自不同域的请求,但同源策略隔离了应有的响应,不能跨域访问资源。因此,当内容允许“跨域”或是在不同域之间共享时,Origin标头的引入使得浏览器和网站能够达成一致。

CSRF攻击的一个特性就是伪造请求从一个不同于目标网站的域发起,以下就是一个针对“密码重置”功能的CSRF攻击:

〈html〉〈body〉

〈script〉

Var xhr=new XMLHttpRequest();

Xhr.open(“post”,”http://api.web.site/resetpassword”);

Xhr.setrequestheader(“content-type,””application/x-www

form-urlencoded”);

Xhr.send(“notify=1&email=attacker@anon.email”);

〈/script〉

〈/body〉

〈/html〉

当浏览器访问链接的时候,在没有用户介入的情况下生成了一条XHR请求,在下面捕捉的数据包中,Origin的值是请求标头的一部分。

POST http://api.web.site/resetpassword HTTP/1.1

Host:web.site

User-agent:mozilla/5.0 gecko/20100101 firefox/8.0.1

Referer:http://trigger.site/csrf

Content-length:34

Content-type:text/plain;charset=utr-8

Origin:http://trigger.site

Notify=1&email=attacker@anon.email

可以看到由于域http://trigger.site与http://api.web.site不一致,因此可以被当作潜在的CSRF攻击被忽略掉。

2.2 分配伪随机数令牌

第一种防护措施是为认证用户分配一个临时的伪随机数令牌。令牌的值仅WEB应用程序和用户的WEB浏览器知道。当WEB应用程序接收到请求时,首先验证令牌的值是否正确。如果值和用户当前会话预期的值不符,那么请求就会被拒绝。

〈form〉

〈input type=hidden name=” csrf” value=”

87ad89sdf78adf8sdf888sdf887”〉

〈/form〉

这种令牌必须是短暂而且不可预测的,对于每个敏感的状态转换,都应该更新令牌,目标是将特定动作联系到特定的用户。不可预测的令牌能够阻止攻击者伪造请求,因为他们不知道正确的值。

2.3 对cookie进行镜像

Web应用程序的会话cookie已经使用了伪随机数。无论是编程语言提供的或是自定义的会话,都包含秘密令牌作为必要的属性,这样,cookie的值就是保护表单很理想的备选方案。同时还减轻了应用程序为每个请求记录附加值的压力,应用程序只需要比较用户的cookie值和表单提交的令牌值。这种应对措施是在隐藏的表单字段中放置了会话cookie的一份拷贝,服务器只需要简单地验证请求会话的cookie,对比表单提供的值,两者是否匹配。这样的话,攻击者不得不破解会话cookie,来创建有效的令牌。但是同源策略阻止某一个“域”的网站读取其他域的cookie,不能访问cookie值,攻击者就无法伪造合法的请求。

2.4 改变浏览习惯

其实,有一种非常简单的CSRF防御手段:改变浏览习惯。如每次仅浏览一个网站,不使用多个浏览器窗口或是多个标签页;当结束对某个网站的访问时,使用其注销功能而不是简单地关掉浏览器或是跳转到下一个网站;不使用任何网站提供的“收藏我”或是其他自动登录特性。这些或许是有效的防御措施,但这样的习惯会给我们带来许多不便与不适。

3 结束语

CSRF的出现既存在于HTTP本身,也存在于浏览器解释HTML的方式,现在aPI的发展导致了CSRF更容易被攻击;CSRF攻击很难被检测,因为它们比跨站脚本攻击或SQL注入攻击更具危害性,只要攻击者能从中获取相应的利益,这种威胁就会长期存在。这就需要我们工作中不断去探索,努力去研究应对措施,把CSRF危害程度降到最低。

[1]邓吉,柳靖著.黑客攻防实战详解(第一版)[M].北京:电子工业出版社,2012.

[2]Stallings,w.网络安全基础应用与标准(第一版)[M].北京:清华大学出版社,2007.

[3]Kevin D.Mitnick;William L.Simon.入侵的艺术(第二版)[M].北京:清华大学出版社,2009.

[4]肖遥.网站入侵与脚本攻防修炼(第二版)[M].北京:电子工业出版社,2009.

[5]吴灏.网络攻防技术(第一版)[M].北京:机械工业出版社,2009.

The Principle of CSRF and Protective Measures

Yang Jiaying
(Guangdong Trade Vocational Technical School,Guangzhou 510507,Guangdong)

CSRF relies on HTTP stateless request,uses HTML to force the attracted browser to submit the request,so as to achieve the attack purpose.CSRF is hard to be found and has great harm.This paper deeply studies the principle of CSRF and the protective measures,strives to minimize the CSRF damage.

Cross-Site Request Forgery;catch;cheating;protection;attack

TP393.08

a

1008-6609(2016)03-0081-03

杨家,,男,广东湛江人,大学本科,讲师,研究方向:网页美工设计,网页制作,网站分析,计算机网络管理与工程设计。

猜你喜欢
令牌表单攻击者
称金块
机动能力受限的目标-攻击-防御定性微分对策
电子表单系统应用分析
基于路由和QoS令牌桶的集中式限速网关
基于图表示和匹配的表单定位与提取
动态令牌分配的TCSN多级令牌桶流量监管算法
正面迎接批判
浅谈网页制作中表单的教学
有限次重复博弈下的网络攻击行为研究
动态表单技术在教学管理中的应用*