项目管理资源网

您的位置:项目管理资源网 >> IT通信项目管理

避免沙堆建楼 做好软件安全测试

2011/5/25 9:29:04 |  5241次阅读 |  来源:网友转载   【已有0条评论】发表评论

近来,在我负责的公司某软件产品的最后测试工作,常常被问到这样一个问题:在做测试过程中,我们的软件产品在安全性方面考虑了多少?应该如何测评一个软件到底有多安全?

这个软件因为涉及客户商业上重要的信息资料,因此用户关心的核心问题始终围绕“这个软件安全吗”。一个由于设计导致的安全漏洞和一个由于实现导致的安全漏洞,对用户的最终影响都是巨大的。我的任务就是确保这个软件在安全性方面能满足客户期望。

一、什么是软件安全性测试

(1)什么是软件安全

软件安全属于软件领域里一个重要的子领域。在以前的单机时代,安全问题主要是操作系统容易感染病毒,单机应用程序软件安全问题并不突出。但是自从互联网普及后,软件安全问题愈加显加突显,使得软件安全性测试的重要性上升到一个前所未有的高度。

软件安全一般分为两个层次,即应用程序级别的安全性和操作系统级别的安全性。应用程序级别的安全性,包括对数据或业务功能的访问,在预期的安全性情况下,操作者只能访问应用程序的特定功能、有限的数据等。操作系统级别的安全性是确保只有具备系统平台访问权限的用户才能访问,包括对系统的登录或远程访问。

本文所讲的软件安全主要是应用程序层的安全,包括两个层面:①是应用程序本身的安全性。一般来说,应用程序的安全问题主要是由软件漏洞导致的,这些漏洞可以是设计上的缺陷或是编程上的问题,甚至是开发人员预留的后门。②是应用程序的数据安全,包括数据存储安全和数据传输安全两个方面。

(2)软件安全性测试

一般来说,对安全性要求不高的软件,其安全性测试可以混在单元测试、集成测试、系统测试里一起做。但对安全性有较高需求的软件,则必须做专门的安全性测试,以便在破坏之前预防并识别软件的安全问题。

安全性测试(Security Testing)是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。应用程序级安全测试的主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力, 根据安全指标不同测试策略也不同。注意:安全性测试并不最终证明应用程序是安全的,而是用于验证所设立策略的有效性,这些对策是基于威胁分析阶段所做的假设而选择的。例如,测试应用软件在防止非授权的内部或外部用户的访问或故意破坏等情况时的运作。

二、软件安全性测试过程

(1)安全性测试方法

有许多的测试手段可以进行安全性测试,目前主要安全测试方法有:

①静态的代码安全测试:主要通过对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。静态的源代码安全测试是非常有用的方法,它可以在编码阶段找出所有可能存在安全风险的代码,这样开发人员可以在早期解决潜在的安全问题。而正因为如此,静态代码测试比较适用于早期的代码开发阶段,而不是测试阶段。

②动态的渗透测试:渗透测试也是常用的安全测试方法。是使用自动化工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行时刻所存在的安全漏洞。这种测试的特点就是真实有效,一般找出来的问题都是正确的,也是较为严重的。但渗透测试一个致命的缺点是模拟的测试数据只能到达有限的测试点,覆盖率很低。

③程序数据扫描。一个有高安全性需求的软件,在运行过程中数据是不能遭到破坏的,否则就会导致缓冲区溢出类型的攻击。数据扫描的手段通常是进行内存测试,内存测试可以发现许多诸如缓冲区溢出之类的漏洞,而这类漏洞使用除此之外的测试手段都难以发现。例如,对软件运行时的内存信息进行扫描,看是否存在一些导致隐患的信息,当然

    项目经理胜任力免费测评PMQ上线啦!快来测测你排多少名吧~

    http://www.leadge.com/pmqhd/index.html

“项目管理生根计划”
企业项目经理能力培养和落地发展方案下载>>

分享道


网站文章版权归原作者所有,如有认为侵权请联系我们,将于1个工作日内作出处理!
网友评论【 发表评论 0条 】
网友评论(共0 条评论)..
验证码: 点击刷新

请您注意护互联网安全的决定》及中华人民共和国其他各项有关法律法规或间接导致的民事或刑事法律责任
·您在项目管理资源网新闻评论发表的作品,项目管理资源网有权在网站内保留、转载、引用或者删除
·参与本评论即表明您已经阅读并接受上述条款