APP下载

二维码在Web中应用的安全性研究

2017-07-29王丽芬苏晨张景峰胡晓红

电脑知识与技术 2017年12期
关键词:二维码安全性

王丽芬 苏晨 张景峰 胡晓红

摘要:随着智能手机的普及,二维码web应用程序的安全性成为了引人关注的问题。通過对二维码web应用的安全漏洞进行分析,发现问题的根源是用二维码存储网址,只要继续采用这种应用模式,就很难避免网络攻击,为此我们提出了二维码新的应用模式。

关键词:二维码;Web应用;安全性

1概述

随着智能手机的不断普及,3G和4G网络的迅速发展,人们对智能手机上的应用程序的需求异常高涨。智能手机和其他移动设备构成了移动服务平台。这种新兴的移动应用与强大的设备相结合,为人类的生活带来了极大的便利。

Web应用程序的种类也在不断增加,从最初的游戏、视频,到现在的微信、微博,特别是随着电子商务的不断发展,人们已经逐渐习惯了网络购物,通过Web应用直接支付已经成为了常态。特别是近年来,互联网和金融行业的结合,已经有大量的Web应用具有了支付功能.相信在不久的未来,具有支付功能的Web应用会愈来愈多。但是这里特别需要指出的是:具有支付功能的Web应用程序大部分都具有扫描二维码的功能,而且将这一功能作为支付手段之一。那么这些二维码Web应用是否安全?如何保障它们的安全性,这是一个值得高度关注的课题。

事实上,从新闻报道中经常看到某些用户使用手机扫描二维码被骗子诈骗的事件。例如:“据《钱江晚报》报道,浙江永康一陈女士近日因扫描了陌生人发来的二维码,被骗走5000元。”类似的事件层出不穷,如果在Google上输入“二维码诈骗”作为关键词,就会搜索出约439万个结果,这说明扫描二维码作为支付手段,这一功能存在巨大的安全隐患。特别是2014年3月13日央行发文暂停了支付宝二维码支付业务,使得有关二维码Web应用的安全陸问题成为了引人注目的问题。

随着智能手机的不断普及,人们对于移动设备上的应用程序的需求在不断的高涨,然而如何设计与开发移动应用程序,所使用的移动应用程序是否安全,会面临什么样的安全挑战?扫描二维码存在哪些安全隐患?如何设计更安全的Web应用程序?下面对此进行了初步的分析。

2移动应用程序

在传统意义上,把应用程序定义为帮助用户执行特定任务的,在计算机上运行的软件,这种定义方式是为了将应用程序与系统软件相区分。随着智能手机的出现应用程序的定义已经扩展为在智能手机和平板电脑上运行的软件。移动应用程序的开发有多种模式,主要分为本体语言和Web方式。

本体语言通常指移动设备所支持的语言,例如iphone系统使用的本体语言是Objective-C,它是C++的一个变种。Android系统使用的本体语言是Java。使用本体语言进行开发具有程序运行效率高、速度快、安全性高等优点。但是,开发的难度比较大,开发速度慢,开发成本也比较高。特别是Android系统,由于要适配多种的设备,不同设备之间都有一些不兼容性,因此,开发和测试的工作量就非常大,开发成本也很高。

正如文献所描述的,Web开发方式主要是采用HTML5,开发的基本方法是:运用HTML5语言和CSS3设计用户界面,用JavaScript实现各种功能。由于HTML是在浏览器上运行的,因此可以做到与平台无关。不论是iOS设备还是Android设备,只要它的浏览器支持HTML5,Web应用程序就可以正常的工作。这就极大地节约了开发成本。然而有利就有弊,HTML5的安全性问题同样会造成Web应用程序的安全性问题。

作为新一代Web语言,HTML5凭借丰富的应用API、跨平台等特点被公认为未来网页技术的发展方向。然而不论HTML5具有多么强大的功能,它始终是一种描述网页的标注语言,它必须通过浏览器来发挥其功能。HTML5的安全性同样会影响Web应用的安全陸。

3Web应用的安全性

随着移动终端及移动互联网的迅速发展,在WEB应用中,使用HTML5已经成为了常态。HTML5标准目前已经被绝大多数浏览器所支持,特别是移动终端所使用的浏览器都支持HTML5标准。在现在的移动终端APP开发中,采用HTML5完成开发工作是最便捷的方法。

由于在Web应用大量使用HTML5标准,由H了ML5所引起的安全问题也导致了Web应用的安全问题,增加了攻击者发动攻击的几率,扩大了可攻击的范围,并造成了严重的后果。早在2011年8月,欧盟网络与信息安全局ENISA从安全角度来总体分析这套规范,发布了一份分析HTML5安全的文档,宣布发现HTML5中的51个安全问题。随着基于HTML5的互联网应用及Web应用大规模推广,其安全问题将逐渐暴露并引发关注。

虽然HTML5有许多安全隐患,但是在移动终端的Web应用中最容易出现的安全问题是:客户端存储、跨网站脚本。

3.1客户端存储安全问题

在HTMIA版本中,通常采用Cookies来处理本地信息的存储问题,分配空间相对较小。在客户端上,只需要存储简单的会话ID等少量信息,当用户需要多次访问相同数据时,需要多次向服务器端发送请求获取,这种应用模式降低了Web应用的访问性能。

在HTML5标准中,引入了LocalStorage的概念。允许浏览器在客户端存储大量数据,并允许使用新类型的数据。这种方式大大提高了访问性能,但是却牺牲Web应用的安全性,由此带来了巨大的安全隐患。采用LocalStorage的方式,敏感数据将被存储在客户端,攻击者可以设计一个Web应用,在其中植入某些代码,当用户安装了攻击者设计的Web应用时,这些程序可以窃取移动终端上用户的敏感数据,导致了许多安全问题。

3.2跨网站脚本攻击

跨网站脚本(Cross-site scripting,通常简称为XSS)是一种常见的网站应用程序的安全漏洞攻击,是代码注入的一种。一些恶意用户将代码注入网页上,其他用户在访问这些页面时就会受到攻击。这类攻击通常包含了HTML5以及Javascfipt等脚本语言。XSS攻击通常指的是利用网页开发时留下的漏洞,通过巧妙的方法注入恶意脚本到网页上。

基本的攻击手法是:利用Web应用中的文本输入与交互窗口输入一段包含了恶意攻击的脚本,把恶意的脚本伪装成一个链接,当输入的信息在窗口上重新显示,其他用户点击其中的链接就有可能受到攻击。在大众交互式应用,例如微信、微博等Web应用中,就很容易受到这种类型的攻击。例如:“2011年6月28日,新浪微博出现了一次比较大的XSS攻击事件。”具体攻击手法是:攻击者用短连接发布了一个新浪url:http://weibo.com/pub/star/g/xyyyd">?type-update。当用户点击该url时,新浪会对该字符串进行处理,变成类似http://weibo.corn/pub/star.php?g=xyyyd">?type=update。正常的应该是返回错误页面,而由于应用程序没有对参数g做充足的过滤,将参数值直接写入到返回页面,导致该脚本被执行。

事实上,所有的Web攻击的实现都需要在用户自己的设备上运行一段攻击代码,只不过攻击者采用了各种欺骗的手段,使得用户自己没有意识到而已。文献列举了许多Web安全的检测手段和方法,这些检测手段关闭了网络攻击的一扇扇窗户,然而,使用手机扫描二维码却为网络攻击者打开了大门。许多扫描二维码的Web应用对其扫描的结果没有进行任何安全检测,由此产生了大量的安全漏洞,并且已经产生了严重的后果。

4二维码的安全漏洞

目前流行的二维码是日本Denso公司1994年发明的QR码。与普通的一维条码相比,OR码可以存储更多数据,而且数据类型可以是任意的二进制数据。QR码最早是用于汽车零部件的追踪,随着3G移动网络的发展,移动互联网逐渐发展起来,但是在当时流行的手机输入网址是非常困难的。于是,日本的移动电话公司开始在有相机的移动电话上加入了OR码的识读软件,这样就减少了用户在手机上输入网址的麻烦。后来使用OR码来存储网址在日本的杂志及广告上越来越流行,通过扫描QR码上网就逐渐称为了一种流行的应用模式。

然而随着Apple的iphone手机的问世,以及后续的Android操作系统的诞生,智能手机获得了飞速的发展,智能手机的功能也获得了极大的丰富。在这种环境下,通过扫描二维码上网和下载软件虽然方便了广大用户,但也为犯罪分子从事不法活动打开了方便之门。

正如文献所描述的,随着二维码技术的应用与推广,二维码已成为病毒在手机上传播的主要通道。犯罪分子通过免费的二维码生成工具和网站,将虚假信息、钓鱼网站、手机病毒的网址编制成二维码,并在一些媒体和广告上发布,当消费者通过手机扫码时,如果不加甄别就可能成为这些网络攻击的牺牲品。面对这样的问题,如何解决?我们可以从二维码的生成、识读这两个方向来考虑解决方案。

首先,我们考虑二维码的生成。理论上说,只要具有二维码的生成软件,就可以生成包含任何信息的二维码。在目前许多的二维码应用中,生成的二维码都包含网址,当客户端对二维码进行扫描和处理时,都需要调用浏览器进行浏览,这就有可能遭遇网络攻击。

其次,从二维码的识读方面。目前可以识读QR码的手机软件达到了一百多款。这些软件可以分为两类。第一种是单纯识读二维码,利用获得的网址直接上网或下载软件。另一种是将二维码识读集成到软件系统中,将二维码识读作为一种输入手段。例如:微信、支付宝等。

针对第一种单纯识读二维码的软件,我建议应该增加一个显示二维码内容的设置,使用户在直接上网或下载软件之前有一个选择的机会,虽然这不能完全解决问题,但起码可以防范一些犯罪行为的发生。

针对第二种类型的应用,对二维码进行扫描的结果实际上可以看作是文本输入。为了防范恶意的攻击,必须对扫描的结果进行严格的过滤检查,这类似于防范XSS漏洞的处理方法。但是由于二维码包含的信息既可以是网址,也可以是任意的文本,因此过滤检查并不能完全解决问题。最大的问题是:面对一个网络地址,我们只能通过浏览器访问的方式进行处理,但是在访问的过程中,我们可能已经遭遇了网络攻击。事实上,要想安全的使用二维码Web应用程序,唯一的办法是摒弃目前使用二维码存储网址的应用模式。

5二维码的应用模式

改变二维码的使用方式可以更好地解决web应用的安全问题。在许多集成二维码的应用中,例如微信、支付宝等,二维码主要是用来标识不同的账号或用户,这些账号在应用系统中都有唯一的标识,如果在二维码中仅存储唯一标识而不包含网址,在应用程序中将唯一标识转换为相应的網址,这样Web应用的安全性就能够大大的提高。下面通过一个例子来说明这种新的二维码应用模式。

在市面上流通的商品都有商品条码,对商品进行追溯在我国有着巨大的需求.如果我们在商品上印制一个二维码,它包含的信息是:商品条码、生产日期、商品唯一序列号。通过二维码Web应用,我们就可以建立一个简单的追溯体系。

第一步,使用Web应用扫描二维码,可以由二维码的扫描结果解析出:商品条码、生产日期、唯一序列号。

第二步,商品条码中包含了三个信息:国家、生产厂商编号、产品编号。

第三步,根据生产厂商的编号对应厂商的网址。

第四步,将产品编号、生产日期、唯一序列号作为参数传递给厂商的网站,进行查询和追溯。

这样建立的web应用安全性是可以保障的.首先,我们使用的二维码仅包含一系列数字,对扫描结果进行解析是非常简单的工作,如果扫描的结果不符合我们的要求,就可以直接退出系统,这样就保障了安全性。虽然我们的Web应用也需要通过网络获取信息,但是由于网址是我们在Web应用内部构造的,这就保证我们不会访问到危险的网址。此外,这样的Web应用并不是针对一个厂商建立的,对于所有的厂商,我们都可以使用,我们只需要更新“生产厂商编号与厂商网址”的对应表,就可以对系统进行扩展。

6结束语

总之,对于包含二维码扫描功能的Web应用,不论是从使用者的角度,还是从设计者的角度,都要提高安全意识,只有逐渐摒弃使用二维码存储网址这种应用模式,才能够真正的改善Web应用的安全性。

猜你喜欢

二维码安全性
二维码迷宫
二维码
米氮平治疗老年失眠伴抑郁症的疗效及安全性
让严肃的二维码呆萌起来
二维码让政务公开更直接
ApplePay横空出世 安全性遭受质疑 拿什么保护你,我的苹果支付?
二维码,别想一扫了之
Imagination发布可实现下一代SoC安全性的OmniShield技术