河北建材职业技术学院 陈慧宁 赵克宝
浅析电子商务网站对CSRF攻击的防范
河北建材职业技术学院 陈慧宁 赵克宝
在互联网飞速发展的今天,网上交易和在线电子支付成为一种新型的商业运营模式—— 电子商务,作为消费者,交易安全是首要问题。本文介绍了电子商务网站对安全性的要求和防范的重要性,应该如何防范CSRF攻击,以构成一个安全的电子商务系统。
电子商务网站 CSRF攻击 Cookie JSON
在科学技术大发展的今天,随着信息化的浪潮席卷全球,传统的商务模式受到巨大的冲击。越来越多的企业和个人消费者,在Internet开放的网络环境下,基于浏览器/服务器应用方式,实现消费者网上购物、商户之间网上交易和在线电子支付的一种新型的商业运营模式—— 电子商务。更由于电子商务本身的开放性、全球性、低成本、高效率等特征,使得它不仅仅是一种新的贸易形式,更将会影响到整个社会的经济运行机构。
电子商务将传统的商务流程电子化、数字化,一方面以电子流代替了实物流、资金流,可以大量减少人力、物力,降低了成本;另一方面突破了时间和空间的限制,使得交易活动可以在任何时间、任何地点进行,从而大大地提高了效率。电子商务在现代社会占据如此重要的地位,而Internet自身的开放性、广泛性和匿名性,给电子商务带来诸多的安全隐患,对于电子商务网站本身,更是要做好网络安全防范。
2.1 什么是CSRF攻击
CSRF(Cross-site request forgery)跨站请求伪造,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行,正因为如此,对其进行防范的资源也相当稀少,使其变得难以防范,所以被认为比XSS更具危险性,现如今,CSRF的防范已被越来越多的网站所重视。
如果一个电子商务网站使用了大量AJAX技术(Asynchronous JavaScript and XML即异步JavaScript和XML,是一种创建交互式网页应用的网页开发技术),很容易产生CSRF攻击,使用户电脑中毒,造成网银账户失窃等严重后果。不要小看CSRF,早先Google的那个CSRF漏洞,很可能导致邮件泄漏,当时的Google电子邮件系统很容易受到CSRF攻击中的“更改密码”攻击。另外,CSRF还可能导致蠕虫爆发。
2.2 CSRF攻击分类
CSRF是伪造客户端请求的一种攻击,这种攻击方式是国外的安全人员于2000年提出,国内直到2006年初才被关注,2008年CSRF攻击方式开始在BLOG、SNS等大型社区类网站的脚本蠕虫中使用,造成网民隐私泄露严重。
CSRF的定义是强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。CSRF漏洞的攻击一般分为站内和站外两种类型:
CSRF站内类型的漏洞在一定程度上是由于程序员滥用Request类变量造成的,一些敏感的操作本来是要求用户从表单提交发起POST请求传参给程序,但是由于使用了Request等变量,程序也接收GET请求传参,这样就给攻击者使用CSRF攻击创造了条件,一般攻击者只要把预先准备好的请求参数放在站内一个贴子或者留言的图片链接里,受害者浏览了这样的页面就会被强迫发起请求。作为网上交易用户,我们可能只点了几个这样的链接和图片,自己的帐户密码和个人隐私就被盗取了。
CSRF站外类型的漏洞其实就是传统意义上的外部提交数据问题,一般程序员会考虑给一些留言评论等的表单加上水印以防止SPAM问题,但是为了用户的体验性,一些操作可能没有做任何限制,所以攻击者可以先预测好请求的参数,在站外的Web页面里编写java script脚本伪造文件请求或和自动提交的表单来实现GET、POST请求,用户在会话状态下点击链接访问站外的Web页面,客户端就被强迫发起请求。
2.3 浏览器的安全缺陷
Web应用程序几乎都是使用Cookie来识别用户身份以及保存会话状态,但是所有的浏览器在最初加入Cookie功能时并没有考虑安全因素,从WEB页面产生的文件请求都会带上Cookie,浏览器的这种安全缺陷给CSRF漏洞的攻击创造了最基本的条件,因为Web页面中的任意文件请求都会带上Cookie,所以我们将文件地址替换为一个链接的话,用户访问Web页面就相当于会话状态下自动点击了链接,而且带有SRC属性具有文件请求的HTML标签,如图片、FLASH、音乐等相关的应用都会产生伪造GET请求的CSRF安全问题。一个Web应用程序可能会因为最基本的渲染页面的HTML标签应用,而导致程序里所有的GET类型传输参数都不可靠。
2.4 浏览器的会话安全特性
现今浏览器支持的Cookie实际上分为两种形式:一种是内存Cookie,在没有设定Cookie值的expires参数,也就是没有设置Cookie的失效时间情况下,这个Cookie在关闭浏览器后将失效,并且不会保存在本地。另外一种是本地保存Cookie,也就是设置了expires参数,Cookie的值指定了失效时间,那么这个Cookie会保存在本地,关闭浏览器后再访问网站,在Cookie有效时间内所有的请求都会带上这个本地保存的Cookie。
Internet Explorer有一个隐私报告功能,其实这是一个安全功能,它会阻挡所有的第三方Cookie,比如甲区域Web页面嵌入了乙区域的文件,客户端浏览器访问了甲区域的Web页面后对乙区域所发起的文件请求所带上的Cookie会被IE拦截。除去文件请求情况,甲区域的Web页面如果使用IFRAME帧包含乙区域的Web页面,访问甲区域的Web页面后,乙区域的Web页面里的所有请求包括文件请求带上的Cookie同样会被IE拦截。不过Internet Explorer的这个安全功能有两个特性,一是不会拦截内存Cookie,二是在网站设置了P3P头的情况下,会允许跨域访问Cookie,隐私报告功能就不会起作用了。
所以在Internet Explorer的这个安全特性的前提下,攻击者要进行站外的CSRF攻击使用文件请求来伪造GET请求的话,受害者必须在使用内存Cookie也就是没有保存登陆的会话状态下才可能成功。而Firefox浏览器并没有考虑使用这样的功能,站外的CSRF攻击完全没有限制。因此我们在进行网上交易时要选择好浏览器。
2.5 Java script劫持技术
近年来的Web程序频繁使用AJAX技术,JSON也开始取代XML做为AJAX的数据传输格式,JSON实际上就是一段JavaScript,大部分都是定义的数组格式。Fortify软件公司的三位安全人员在2007年提出了JavaScript劫持技术,这是一种针对JSON动态数据的攻击方式,实际上这也是一种变相的CSRF攻击。攻击者从站外调用一个Script标签包含站内的一个JSON动态数据接口,因为