伴随着科学技术的飞速发展,面向对象技术、数据库技术、组件技术等的日益成熟,推动了基于互联网的平台应用的蓬勃发展,并已渗透到社会生活的各个领域,深刻影响着人们的生活、学习和工作。同时,随着人们对应用程序安全问题的日益关注和更高的要求,传统的软件测试技术已不能胜任应用程序安全测试的工作,探索适合当前应用程序安全测试的方法成为一个具有挑战性的课题。
由此可以看出,因特网已成为人们进行信息交流不可缺少的平台,是极为重要的社会基础设施。以互联网为基础的应用程序也逐渐发展成为当今最为流行的信息化处理模式,并日益融入到民生的各个领域,从家喻户晓的社会网络服务到庞大的电子商务平台,几乎随处可见,如政府、商业、金融、医疗、国防、教育、娱乐等。在这些应用中,除门户网站、博客、论坛等传统应用外,越来越多涉及敏感信息的处理工作也已开始依靠应用来完成,如政府行政审批、电子银行、网上购物、证券交易、医疗数据处理等。这一关键应用在给用户带来方便的同时,也对其安全性提出了更高的要求。但是,在实际的应用开发过程中,常常面临交付周期短、开发成本低的双重压力,许多开发人员在工作时更多地关注于业务功能的实现,而忽略了应用的安全性问题,使得应用在运行时不可避免地会出现一些安全漏洞,给应用带来很大隐患。这种安全漏洞极有可能导致应用程序的敏感信息泄露,以及数据窃取、网页篡改、拒绝服务等安全问题,一旦被恶意攻击者利用,将对社会和个人造成重大损失,严重影响社会稳定、经济发展和人们的正常生活。所以,在发布应用程序并将其投入实际应用之前,就需要对如何确定其安全性和可靠性进行研究。
遗憾的是,由于应用程序本身及其运行环境的复杂性,在网络层、系统层和应用层等各个层次都可能存在安全漏洞,在任何一个环节上出现问题都有可能导致严重的安全事故。但目前对应用程序安全性的研究主要集中在对应用程序整体运行的安全性评价与分析,以及防火墙、入侵检测等网络安全技术的应用等方面,使得网络层和系统层的安全性大大提高。但是,应用受到的大多数攻击都来自于它的应用层,而且很可能来自于任意的在线用户,甚至是那些已经通过了认证的用户。另外,应用程序基本上采用分布式结构,各实体之间的称合度较低,这类客户端脚本语言等技术的发展非常迅速,并得到广泛应用,应用程序的结构和行为特征日益多样化,使得应用程序本身的安全问题日益复杂,防范各种安全问题,尤其是电子政务系统、证券金融系统、电子商务系统等,难度越来越大。总之,测试应用程序的安全性要比测试传统应用程序的安全性困难得多,这给软件测试领域带来了新的挑战,本文的讨论正是在这样的背景下产生的。