前面的文章我们为大家介绍了DevSecOps的全部流程、如何合理地将安全测试融入到各个阶段中,以及静态代码分析工具的推荐,本文继续为大家推荐黑盒测试工具WebInspect。
我们前面还讲了黑盒测试,它跟白盒测试是非常不一样的。黑盒测试的对象不是源代码,是一个网页。模拟黑客对网页或web应用做漏洞扫描,无关开发语言、服务器,黑盒测试并不知道里面是什么技术。只是模拟黑客对应用本身做漏洞扫描,发现一些容易被利用的高风险的问题。
在靠近上线的时候,黑盒测试非常重要,我们想验证前期的代码测试是不是有效果,是不是已经把一些高风险的问题修复掉了。
给大家推荐的黑盒测试工具WebInspect的界面如上图所示,它的原理是爬网。我们每个网站的主页都有很多链接,WebInspect通过爬取网站所有链接的url,然后再把这些爬取的url,用测试用例去发起请求。
这个发起请求的过程就很类似于黑客发请求的过程,不断对被测试的web应用的服务器发起大量的请求。然后通过请求返回的页面去分析有没有一些容易被利用的安全隐患和风险。
这就是黑盒测试工具的原理和特点,和白盒测试是很不一样的。它们分别应用于不同的阶段,一个是在开发阶段,一个主要在测试阶段。第二个是他们的技术原理和关注的问题也不一样。我个人认为,白盒测试和黑盒测试是相辅相成的,相互补充、缺一不可的。
白盒测试并不能解决所有的问题,一些协议的问题、应用服务器的问题等,靠代码扫描是测不出来的。并且针对代码问题的修复,也不可能是完全修复掉,很多时候可能只是修复了一些高风险的漏洞。
但是有一些是中低风险的,危害也不小,可能我们会疏漏了,就需要黑盒测试来查漏补缺。现在还有一种灰盒测试,把黑盒测试更加精细化了,测试的维度更加深了。
黑盒测试往往是在项目已经完成后才开始做,这个时候往往已经有些晚了,我们最佳实践的建议是左移,将黑盒测试左移到应用发布的时候。在应用打包发布到应用服务器上面的时候,发布完之后,我们的代码已经可以可视化了,变成网页了,可以通过浏览器去查看了。
这个时候我们通过Jenkins这类工具去调用黑盒的web漏洞扫描工具,去完成自动化的扫描测试。一旦发布到Tomcat后,我们就触发扫描的命令,自动触发黑盒扫描,发现问题后将结果传给软件安全中心,查看结果,分发bug,直到修复。这个时候我们会发现,黑盒测试也可以跟CI/CD集成。