软件测试方式的比较:黑盒测试和灰盒测试

日期: 2009-12-21 作者:Diana Kelley翻译:李博雯 来源:TechTarget中国 英文

黑盒测试:从外往里看   黑盒测试也被称为动态分析和网页应用扫描,它在代码运行的时候对其进行分析,来发现它运行在生产系统上的时候攻击者可能会发现的弱点。由于这些工具站在外人的角度,它们能够测试弱点是否可以被利用,或者发现一个人类攻击者能够手动发现的弱点。   例如,工具可能会发现一个可能被用于SQL注入攻击的输入检查错误,但是通过验证可能会证实,通过更严格的访问控制和在后台数据库上使用存储过程,这个漏洞是不会被利用的。动态工具可以在一个软件被批准投入生产之前使用,而非入侵性的动态测试可以在活动的软件上持续进行,以扫描新的漏洞。

  动态工具用“爬行”或者“蜘蛛”(crawl or spider……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

黑盒测试:从外往里看

  黑盒测试也被称为动态分析和网页应用扫描,它在代码运行的时候对其进行分析,来发现它运行在生产系统上的时候攻击者可能会发现的弱点。由于这些工具站在外人的角度,它们能够测试弱点是否可以被利用,或者发现一个人类攻击者能够手动发现的弱点。

  例如,工具可能会发现一个可能被用于SQL注入攻击的输入检查错误,但是通过验证可能会证实,通过更严格的访问控制和在后台数据库上使用存储过程,这个漏洞是不会被利用的。动态工具可以在一个软件被批准投入生产之前使用,而非入侵性的动态测试可以在活动的软件上持续进行,以扫描新的漏洞。

  动态工具用“爬行”或者“蜘蛛”(crawl or spider)软件来发现执行路径。很多Web 2.0软件根据用户输入动态生成页面。这可能会生成递归环,如果工具不能发现并终止环的话。如果工具没有发现软件中所有的路径,它的一部分将保持不被扫描,从而只提供了软件的一部分的漏洞级别。通过Flash或者视频流实现动画的富互联网应用系统(Rich Internet applications - RIA)软件给目前还不能很好的支持这些文件类型的扫描器制造了盲区。由于动态工具测试正在运行的软件,所以它们只能在编译流程之后使用。

  优点:黑盒测试可以验证漏洞及其可利用性(尽管这可能会需要人类测试员的输入来得到最准确的结果),从系统视角测试软件而不需要源码,而且有些可以同时运行,甚至运行在生产系统上。

  缺点:处于生命周期的后端,不良的“蜘蛛”可能导致不完整的测试覆盖。黑盒测试不能指出漏洞产生于代码中的何处,而且多数的测试不能测试Web2.0和富互联网应用系统中的漏洞。

  灰盒测试:提供360度全视角

  白盒和黑盒测试能发现软件在其生命周期不同阶段的不同类型的安全性隐患。像Leek解释的一样,还是有“一种方法或者另一种方法不能发现的东西”而你“需要访问源码来证实漏洞。”基本上,他说,白盒和黑盒测试是“补充工具。”这就是为什么很多的公司选择实施包含了白盒和黑盒测试技术的混合测试方式。

  这种方式也叫灰盒测试,它在不同测试类型之间有一定程度的集成的时候最为有效,特别是当他们被一个总控的软件保证管理控制台或终端结合到一起的时候。例如,一个查到错误的动态工具没有访问底层源码的能力,就使得开发人员很难知道如何改正。如果一个管理终端能集成白盒和黑盒,发现的漏洞就可以按优先级在排列漏洞队列里,而且源码工具能够指出发生问题的确切地点。这能帮助经理们了解问题到底出在什么地方,并给开发者解决问题需要的信息。

  人的因素

  不管你的公司决定用何种安全软件测试工具,或者工具集,都不要忽视让有经验的测试员来运行工具并分析结果的重要性。尽管自动工具的设计初衷是对用户友好,但是这个市场仍在成长的过程中。所有的自动工具在对你的环境和测试优先级进行特殊配置之后才能运行在最佳状态。如果你公司你没有软件安全测试专家,你仍可以通过雇佣外来专家来受益于软件安全测试。Leek建议公司“寻找托管服务,类似SaaS(软件即服务)的靠人力辅助的方案。”对复杂的软件安全分析“你需要人力资源,如果你自己的团队没有这个能力,可以寻求提供这种服务的外部提供商。”

  总结

  像和安全有关的很多问题一样,对“何种类型的测试最好?”这个问题的答案是:要看情况。要在开发前期发现语法错误,白盒测试是不错的选择。没有源码或者想知道一个攻击者会怎样看待你的软件的情况下使用黑盒比较合适。对于最复杂的软件的保证项目,考虑使用同时利用了来自两种类型测试的信息和智能,并用单一的管理和报告控制台来控制的复合模式。

相关推荐