测试技术

最近更新时间:2019-08-01 16:58:29

自动测试

自动测试指借助系统和应用扫描工具对站点的系统层和应用层进行全面的安全扫描,来检测目标系统中是否包含已知的安全问题。

优点

  • 借助自动化检测工具,检测速度较快
  • 对已知漏洞的检测较为全面

缺点

  • 自动化工具对于某些特殊的信息无法实现自动甄别
  • 一些复杂的客户端脚本无法完全实现自动检测
  • 一些具有较强逻辑性的业务无法通过自动化工具实现检测
  • 自动化工具均无法避免误报

手动测试

手动测试作为自动测试的一种补充,会在深度与广度两方面弥补自动化测试的不足,是保障渗透测试质量的一个重要手段,也是渗透测试的精髓所在。手动测试由测试人员进行操作,测试人员的个人技能和经验会直接影响手动测试的结果。
手动测试主要涵盖以下几个方面:

对自动测试结果的验证

自动化检测工具难免存在误报,因而手动测试需要筛选出自动化检测中的误报结果,同时还要对正确告警的结果进行验证和再利用,以确认其危险程度与自动扫描结果一致。

个性化页面信息的人工甄别

多数自动化测试工具,都是以返回页面中的关键字或 HTTP 的状态值作为判断条件,而某些经过精心构造的个性化页面,其返回内容可能无法完全由自动化工具进行判断,这样的站点就需进行手动测试。

JavaScript 测试

随着 Web2.0 的兴起,JavaScript 被广泛使用,而自动化扫描工具对 JavaScript 脚本的解析能力不强,在自动扫描过程中难免遗漏,因此,需要手动对自动化扫描工具无法解析的、含有 JavaScript 脚本的页面进行二次测试,以检测其安全性。

提交数据的精细化测试

自动化测试在对提交数据进行构造时,其构造方式均遵循一定的规律,而手动测试则可避免这样的问题出现。因此某些可从本地构造恶意数据并提交测试的页面,需手动进行深度测试。

业务逻辑的安全测试

业务逻辑相对来说与程序本身关系不大,无论使用什么样的自动化检测工具都无法检测业务逻辑的正确与否。由此就需要人工先对已有业务逻辑进行分析判断,再结合测试人员的经验对业务逻辑安全性进行必要的检测。