预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

http://www.paper.edu.cn 基于WEB的应用程序安全测试技术 董安林,武波 西安电子科技大学软件工程研究所陕西西安(710071) 摘要:随着互联网技术的迅速发展,Web已经对商业、教育、政府和娱乐及我们的工作 和生活产生了深远影响,基于Web的应用程序已经有了很大的市场。但Web应用程序的 安全性一直受到程序开发商和用户的关注,本文简要介绍了Web应用程序安全测试中应注 意的几个方面及测试技术,从用户登录测试、缓存溢出测试、数据安全测试、客户端测试 等方面进行了详细的分析。 关键词:Web应用软件安全测试 基于Web的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试 提出了新的挑战。基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而 且还要评价系统在不同用户的终端(浏览器)的显示是否合适。重要的是,还要从最终用 户的角度进行安全性和可用性测试。 1前言 软件开发过程各阶段都可能产生错误。据国外对一些大型软件系统的统计,需求分析 与设计阶段产生的错误占64%,编码错误占36%。因此,测试工作越早进行,发现和解决 错误的代价越小,风险越小。根据这个观点,SystemeEvolutif公司提出了“W-模型”, 如图1所示。“W-模型”由两个“V”重叠而成。其中一个“V”表示开发过程,另一 个“V”表示测试过程。软件测试的各项测试活动与开发过程的各个阶段相对应。同样安 全性测试也贯穿于软件开发的全过程。 图1软件测试的W模型 在图1所示的模型中,应用系统开发人员一般关注于提供正常工作的应用软件,而测 试人员应该从一个用户的角度去考察,看一看是否能打破它。所以,Web应用系统安全性 测试的目标应该是:核实操作者只能访问其所属用户类型已被授权访问的那些功能或数据, 同时检测用户操作对应用系统的危害性[1][2]。 2web应用程序的安全隐患 目前基于web的应用系统,大都采用三层体系结构。如图2所示。 -1- http://www.paper.edu.cn 图2web应用系统三层体系结构 三层体系结构中,将整个应用系统分为了表示层、中间层和数据层。Web应用系统中, 每层的各个功能模块都有其自身的安全弱点,在程序运行中,主要有四个方面的安全隐患 [2]: 客户端(web浏览器、组件) 服务器(web应用服务器、数据库服务器等) 网络(web应用程序运行的网络环境) 事务(web中各种应用) 通常,web应用程序运行的网络环境的安全性由IT部门负责,包括防火墙测试、数据 的转发、网络流量的监控、病毒防范以及服务器入侵检测等工作。所以web应用程序的安 全测试更多的关注其它三个方面。 对于客户端的安全隐患,一般会有以下有几种:java脚本、cookie、客户端设置等。服 务器端的安全隐患主要是拒绝服务攻击,可以通过压力测试、缓存溢出测试等方法进行测 试;当然服务器端包括整个web应用程序中,最根本的安全隐患就是软件的bug,虽然应 用程序无法完全避免bug,但我们可以通过测试、调试等手段使bug的安全隐患减少到最 小。事务中的安全隐患很多,常见的如电子欺骗,伪装成合法用户来窃取信息,一般通过 用户登录、身份验证等方法进行测试;还有缓存区溢出,脏数据等方面的安全隐患。 3Web应用程序安全测试 3.1用户登录测试 3.1.1用户名与密码测试 在软件研发中,为方便调试程序,开发人员通常在访问权限中,会主动建立一个超级 用户账号来完成软件的总体设计与研发。但在安全设计中,有一个很重要的原则是给用户 尽可能少的访问权限以便他们可以执行与其身份相对应的操作,但不能执行非法操作[3]。 如果有超级用户的存在,最终用户就有可能利用此账号进行创建、修改、删除等一系列对 数据表的操作,也可利用SQL语句改变URL,从而进行许多恶意的操作。 现在的Web应用系统基本采用先注册,后登录的方式。 对于用户登录和账户密码,可以从以下几个方面进行安全测试: 测试有效和无效的用户名和密码,测试是否大小写敏感,是否有最大字符数的限制规 则等。 测试重试次数的限制,如果登录失败的次数超过允许值,应用程序将会做出何种反应 -2- http://www.paper.edu.cn (譬如拒绝此IP地址在短时间内的登录)。 测试是否可以利用历史登录信息或以前的URL来绕开登录程序。 测试执行添加、删除、修改等动作中是否需要登录操作,退出系统之后的操作是否仍 可继续等。 对于用户的认证,可以从以下几个方面进行安全测试: 测试是否所有的合法用法都可以访问程序,非法用户都不能访问程序,如果非法用户 企图登录,其难易程序有多大。 测试用户密码是否符合指定要求(字符、长度),如果不符合,对有