Owasp Testing Guide v4

映射应用的执行路径 (OTG-INFO-007)

综述

在正式开始安全测试以前,理解应用程序的结构是非常重要的。如果没有通透地理解应用的布局情况,往往也无法彻底完成测试。

测试目标

建立目标应用程序结构图,并理解其主要工作流程。

如何测试

在黑盒测试中,测试整个代码路径是非常困难的。不仅仅因为测试者对于应用代码路径毫无所知,而且即使知道,测试所有的代码路径也是非常耗时的。一直折中的办法是将发现的和测试的代码路径记录下来。

有一些办法来实施测试和测量代码覆盖率:

  • 路径 - 测试每个应用路径,包括对决策路径进行组合测试和边界值分析测试。尽管这个方法提过了完全性,但是测试路径的数量会在每个决策分支上呈指数型增长。
  • 数据流 (或者污点分析) - 测试外部交互(通常是用户)发生的变量赋值。专注于映射贯穿应用的数据流、数据转换和数据的使用。
  • 竞争 - 测试多个应用并发实例操作同一个数据的情况。

权衡使用哪种测试方法应该和应用所有者进行协商。更简单的方法应该被采纳,包括询问应用所有者他们特别关心的是什么功能或代码段以及如何到达这些代码段。

黑盒测试

为了向应用所有者证明代码覆盖率,测试者可以使用数据表来记录所有发现的链接(手动或自动)。然后测试者可以更仔细观察应用的决策点,并调查发现了多少重要的代码路径。把发现的这些路径的URL,截图描述等也记录进数据表。

灰盒/白盒测试

在灰盒/白盒盒测试中向应用所有者保证有效的代码覆盖率要容易得多。提供和被询问到的信息足以保证代码覆盖最小要求被满足。

例子

自动蜘蛛抓取

蜘蛛机器人是自动发现特定网站新资源(URL)的工具。提供一系列的访问URL(叫做种子页面)给蜘蛛作为爬行起点。有许多的蜘蛛机器人工具,下面的例子使用 Zed Attack Proxy (ZAP) :

File:OWASPZAPSP.png |1050px|

ZAP 提供如下自动抓取特性,可以根据测试者的需求,按需进行选择:

  • 探索整个站点 - 种子页面列表包括选择站点已经发现了的所有URL。
  • 探索子站点 - 种子页面列表包括选择节点的子树中已经发现了的所有URL。
  • 探索URL - 种子页面列表仅包括与选择节点相关的URL(在站点树中)。
  • 探索整个范围 - 种子页面列表包括用户在‘In Scope’中选择的所有URL。

测试工具

参考资料

白皮书

[1] http://en.wikipedia.org/wiki/Code_coverage