scream

黑盒测试与白盒测试有什么区别

分享
  • Andrew 2 CISP-PTE CISM-WSE 官方采纳
    Andrew2 CISP-PTE CISM-WSE
    官方采纳

    黑盒测试最主要就是测试软件的功能或者模拟黑客来对软件进行安全测试,但无法替代白盒测试,只能说是互补的测试方式,很有可能会发现白盒测试之后没有发现其他类型的错误。另外白盒测试最主要就是测试程序代码逻辑或借助代码审计来高效发现漏洞。

    常见的各种攻击方法常被称为黑盒(black-box)测试方法,因为它主要从外部攻击应用程序,并监控其输入与输出,而之前并不了解它的内部工作机制。相反,白盒(white-box)方法需要分析应用程序的内部运作,查阅所有设计文档、源代码与其他资料。

    “白盒”代码审查可非常高效地发现应用程序中存在的漏洞。在审查源代码的过程中,我们常常可以迅速确定仅使用“黑盒”技巧很难或需要很长时间才能发现的漏洞。例如,通过阅读代码可迅速确定一个可访问任何用户账户的后门密码,但使用密码猜测攻击几乎不可能发现这个密码。

    然而,代码审查并不能完全替代“黑盒”测试。当然,从某种程度上讲,应用程序中的全部漏洞都“存在于源代码中”;因此,理论上,通过代码审查可以确定所有这些漏洞。但是,使用“黑盒”方法可以更迅速、高效地发现许多漏洞。举例来说,使用第14章描述的自动化模糊测试技巧,每分钟可以向一个应用程序发送数百个测试字符串,它们将迅速分散到所有相关代码路径中,并立即返回响应。另外,通过向每个字段发送常见漏洞的触发器,常常可以在几分钟内确定大量通过代码审查需要数天才能发现的漏洞。而且,许多企业级应用程序的结构极其复杂,对用户提交的输入进行多层处理。同时,应用程序在每一个层面实施不同的控制与检查,一段源代码中的明显漏洞可能会被其他地方的代码完全消除。

    大多数情况下,“黑盒”与“白盒”技巧可以相互补充,彼此强化。通常,通过代码审查初步查明一个漏洞后,再在一个正在运行的应用程序中对其进行测试,是确定该漏洞是否真实存在的最简单、最有效的方法。相反,在一个正在运行的应用程序中确定某种反常行为后,审查相关源代码往往是确定其根本原因的最佳途径。因此,如有可能,应适当结合使用“黑盒”与“白盒”的技巧,并根据实时测试过程中应用程序的反常行为、源代码的大小与复杂程度,调整在每种技巧上投入的时间与精力。

  • 安全侠 2 等保中级测评师 CICSA 官方采纳
    安全侠2 等保中级测评师 CICSA
    官方采纳

    黑盒测试和白盒测试主要有以下三个区别:

    • 从定义上的不同:白盒测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。而黑盒测试着重测试软件功能,它并不涉及程序的内部结构和内容特性。黑盒测试并不能取代白盒测试,它与白盒是互补的测试方法,它很可能发现白盒测试不易发现的其他类型错误。

    • 从测试目的上的不同:黑盒测试的目的是检测是否有不正确或遗漏的功能;数据或者参数上,输入能否正确接收;是否有数据结构错误或外部信息访问错误;性能上是否能够满足要求;是否有初始化或终止性错误。而白盒测试的目的是通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致,而不顾它的功能。

    • 检测方式上的不同:白盒测试是穷举路径测试,黑盒测试是穷举输入测试,这两种方法是基于完全不同的观点,反应了事物的两个极端,它们各有侧重和优势,但不能彼此替代。在现代的测试理念中,这两种测试方法不是截然分开的,而是交叉使用。

  • 写回答