Web安全测试用例设计研究

2016-05-19 13:44贺英杰赵正海
电脑知识与技术 2016年7期

贺英杰++赵正海

摘要:Web应用软件的使用日益广泛,为了保证软件的安全性,Web安全测试必不可少,而设计全面、有效的安全测试用例则是关键。该文对Web安全漏洞进行了分类,研究了Web安全测试内容,阐述了安全测试用例设计原则。

关键词:Web应用软件;安全测试;用例设计

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)07-0032-02

Research on Case Design for Web Security Test

HE Ying-jie , ZHAO Zheng-hai

(Unit 91404, Qinhuangdao 066001, China)

Abstract:Web application software is used more and more widely. In order to guarantee the safety of the software, it is necessary to execute Web security test and the key is to design comprehensive and effective security test cases. In this paper, web security vulnerabilities are classified and web security test content is studied. Finally, the principle of case design for security test is expounded.

Key words: Web application software; security test; case design

1概述

随着电子商务和互联网的广泛应用,Web应用软件被越来越广泛的使用。除了传统的应用如电子邮件、新闻网站等,目前Web应用软件也被越来越多的关键性任务使用,例如互联网证券、互联网银行、网络购物等涉及金钱交易的应用,以及政府部门的电子政务等业务通过互联网来开展等。上述关键性的应用对软件安全的要求越来越高,假如由于软件的不安全造成系统被破坏或信息被泄露,将会给国家、集体甚至个人带来巨大的损失。所以,确保Web应用软件的安全是非常重要的,设计全面、有效的安全测试用例则是重中之重。

2常见Web安全问题

研究Web应用软件的安全性测试技术,首先应对已知的应用软件安全问题进行研究,了解各种漏洞产生的原因、触发的条件、造成的后果,抽象出各类漏洞的特征,进行科学的分类,才能有效指导安全性测试工作,保障其科学性、高效性和针对性。OWASP(The Open Web Application Security Project)是一个致力于web应用安全的国际组织,OWASP分析实际应用中经常出现的安全漏洞,并对各类漏洞进行总结描述,发布每年度的最危险的十大漏洞,能够很好地反映Web安全所面临的威胁和这些威胁的发展趋势,被众多权威性机构(如美国国防部、国际信用卡数据安全技术标准、美国联邦贸易委员会等)列为应用程序安全规范。根据OWASP提出的Web应用安全漏洞数据分布来看,Web应用程序面临的安全形势依然严峻,常见的安全问题包括:

1)注入式攻击。例如SQL、OS以及LDAP注入,发生在不受信任的数据作为一条指令或是查询要求的一部分被发往解释程序之时。攻击者所植入的恶意数据可以骗过解释程序,导致该指令或查询要求在无意中被执行。

2)跨站点脚本(简称XSS) 。每当一个应用程序携带了不受信任的数据并将其发送至页面浏览器而又未经过相关验证及转换解析时,XSS类漏洞就会蠢蠢欲动。XSS允许攻击者在受害者的浏览器中执行脚本,这会导致用户的会话遭受劫持、网站受到破坏或者是将用户的访问目标重新定向至某些恶意网站。

3)无效的认证及会话管理功能。应用程序的相关认证及会话管理功能在执行过程中常常发生各种问题,导致攻击者有可能获取到密码、密钥、会话授权或是通过利用其他执行性漏洞来盗取用户身份。

4)对不安全对象的直接引用。当开发者公开引用某种对内部执行对象,例如索引系统、一个文档或是数据库关键信息时,就有可能发生这种不利情况。由于缺乏访问控制检查等安全保护措施,攻击者能够利用引用信息对未获授权的数据进行访问。

5)伪造的跨站点请求 (简称CSRF)。CSRF类攻击的特点是,强迫受害者的某个已进行登录操作的浏览器向安全保护薄弱的页面应用程序发送一条伪造的HTTP请求,包括受害者会话缓存内容及其他任何自动产生的包含认证信息的内容。这就导致了攻击者可以通过强制受害者浏览器向具有漏洞的应用程序传递请求的方式,使相关的应用程序认定该请求是受害者本人所发出的合理请求。

3 Web安全测试内容

攻击者攻击网络的手段多种多样,目的在于寻找并利用网络中存在的漏洞。要想实现周密的安全防范,就需要分析攻击者入侵网络的方式。攻击者对网络攻击的方式包括本地攻击、远程攻击和伪远程攻击。他们的目的主要包括:非法访问目标系统,以获取不应有的访问权限;篡改相关数据,修改重要资料;获取所需资料;使用有关资源,发布虚假信息、占用存储空间甚至发动分布式攻击等。

攻击者进行Web应用攻击行为的过程包括:首先,发现Web系统或应用程序中己存在的漏洞;然后,根据具体漏洞的类别采取对应的、有效的攻击手段;最后,人工分析攻击结果,获取想要的信息或权限。按照目前常见的攻击手段,应该有针对性的进行测试,主要的测试内容如下:

1)漏洞扫描。安全漏洞扫描一般需要借助特定的漏洞扫描器完成,漏洞扫描器其实就是一种能自动检测本地主机或远程端安全性弱点的程序。系统管理员通过漏洞扫描器能及时发现维护的信息系统中存在的安全漏洞,这样在保卫信息系统网络安全过程中可以有的放矢,及时对漏洞进行修补。按照常规标准划分,漏洞扫描一般分为两类,分别为网络漏洞扫描器(Net Scanner)和主机漏洞扫描器(Host Scanner)。网络漏洞扫描器是指通过网络,远程检测目标主机或网络系统的安全漏洞的程序,典型的程序包括ISS Internet Scanner、Satan等。主机漏洞扫描器是指在本地主机或网络系统上运行检测安全漏洞的程序,如著名的COPS、Tiger等软件。

2)功能验证。功能验证属于软件测试当中的黑盒测试方法,对涉及软件的安全功能,如权限管理功能、用户管理功能、认证功能、加密功能等进行测试,验证上述功能是否安全有效。进行黑盒测试的目的是为了模拟一个用户可能采取的恶意行为,观察Web应用系统及其配套的安全措施能否真正地起到防护过滤恶意行为的作用。

3)网络侦听。实际上,网络侦听是指在数据交互或数据通信过程中对数据进行截取并分析的过程。目前,比较通用的网络侦听技术就是捕获网络数据包,我们通常称为Capture,黑客可以通过该项技术盗取公司或个人有价值的数据,同理,测试人员一样可以利用该项技术测试Web应用软件或系统的安全性。

4)模拟攻击测试。模拟攻击测试对于安全测试来说是一种特殊的黑盒测试案例,我们通过模拟攻击的方式来验证信息系统或软件的安全防护能力,在数据处理与数据通信环境中常见的攻击包括冒充、重演、消息篡改、服务拒绝、内部攻击、外部攻击、陷阱门、特洛伊木马等。

4测试用例设计原则

一个完整的Web安全测试用例体系设计可以从身份验证、加密、输入验证、敏感数据、配置管理、授权、异常管理、会话管理、参数操作、审核和日志记录、部署与基础结构等几个方面入手。下面将详细描述测试用例设计时需要注意的要点。

1)数据加密设计原则。执行数据传输操作需要对某些数据进行信息加密和过滤,比如用户登录密码信息、用户信用卡信息等。此时,其他操作也需要相应进行,如解密发送到客户浏览器或用户电子邮箱、将信息存储到数据库等。目前的加密算法种类越来越多,设计越来越复杂,但数据加密的过程一般是可逆的,意思就是能对数据进行加密,也能对数据进行解密。一般可在后台数据库查看登录的账户和密码是否进行了加密。

2)目录设计原则。Web的目录安全是一个不容忽视的因素,如果Web服务器或Web应用程序的设计不合理,攻击者就可以通过简单的URL推测和替换,完全获取整个Web目录的权限,这样就对Web站点造成很大的安全性隐患。我们可以采取一定的预防措施,如在访问每个目录时设置index.htm,或者访问Web服务器的目录时对权限进行严格的设定,从而使发生安全问题的可能性尽可能地降低到最小程度。

3)登录设计原则。一般的Web应用站点都会采用登录或注册后使用的方式,所以必须对用户名和密码进行匹配校验,以防止用户非法登录。进行登录测试时,需要考虑的方面包括输入的密码是否区分大小写、是否有长度条件限制,最多可以尝试登录多少次,哪些文件或者页面需要登录后才能访问或下载等。

4)服务器脚本语言设计原则。脚本语言存在一定的安全隐患,每种脚本语言的细节略有不同,有些脚本语言允许访问根目录,其他脚本语言只允许访问邮件服务器,但是有经验的黑客可以通过脚本漏洞获取服务器的用户名和口令。设计测试用例时需确认站点使用了哪种脚本语言,并研究该语言的漏洞,还需要考虑是否存在没有经过授权就在服务器端编辑或放置脚本的情况。

5)SSL设计原则。现在越来越多的Web站点使用SSL安全协议进行数据传送。SSL是Secure Sockets Layer(安全套接字协议层)的缩写,是Netscape首先发布的网络数据安全传输协议。SSL的原理是通过私有密钥/公开密钥的加密技术(RSA),在TCP层和HTTP层之间对用户与服务器之间的通信进行加密,确保信息传递的安全性。SSL是在私人密钥和公共密钥的基础上进行工作,任何用户都可以获取公共密钥来加密数据,但解密数据需要使用相应的私人密钥。打开一个SSL站点后,有时候能看到浏览器弹出警告信息,地址栏的http变成https,对SSL进行测试的时候需要确认上述特征,以及站点是否具备时间链接限制等相关的安全保护措施。

5结束语

Web应用是一种典型的应用程序,Web应用本身越来越复杂,同时它所使用的开发语言和开发模型在不断发展,所有这些因素给测试带来了很大的难度。目前的安全测试主要依赖测试工程师的直觉和经验,Web安全测试被认为是一个耗时、代价昂贵的过程,因此,迫切需要设计一套系统的Web安全测试用例对Web应用进行全面的测试。本文正是基于以上目的,对Web安全漏洞进行分类,研究了Web安全测试内容,阐述了安全测试用例设计原则。

参考文献:

[1] 方建超,徐全军.网络安全漏洞检测技术分析[J].计算机安全,2005(10):32-33.

[2] 施寅生,邓世伟,谷天阳.服务安全性测试技术研究[J].计算机工程与科学,2007,29(10):11-13.

[3] 刘焕洲,缪淮扣. Web应用程序建模和测试用例生成方法[J].计算机工程,2008,34(6): 60-62.

[4] The Open Web Application Security Project[EB/OL]. http://www.owasp.org/index.php/Main_Page.

[5] 范红,冯登国,吴亚非.信息安全风险评估方法与应用[M].北京:清华大学出版社,2006.