在虚拟实验室运行应用,使用Metasploit等工具来攻击它。当发现一个漏洞时,概念证明可用于显示攻击者如何建立一个反向shell或者其他后门来进入应用和运行应用的系统。这将清楚地展示你的应用中的漏洞将如何被利用,而防火墙根本无法阻止这一切。
已经部署了web应用防火墙(WAF),它完全能够发现所有开发人员遗漏的web应用安全漏洞。但是我们不能简单地依靠WAF来防止糟糕的编码。在虚拟实验室运行应用,使用Metasploit等工具来攻击它。当发现一个漏洞时,概念证明可用于显示攻击者如何建立一个反向shell或者其他后门来进入应用和运行应用的系统。这将清楚地展示你的应用中的漏洞将如何被利用,而防火墙根本无法阻止这一切。
虽然PCI数据安全标准(PCI DSS)6.6要求,该要求为企业提供了两种选择来保护web应用程序抵御已知攻击,第一种是检查所有在企业内部开发的web应用代码,第二种是在web 应用和客户端之间安装web应用防火墙。恰当地部署这两种方法能够提供最佳的多层防御。但是在现代威胁环境中,我们完全有必要同时部署WAF以及分配资源和时间来改善软件开发安全。
虽然WAF提供了一条重要的防线来防御已知攻击和一些未知攻击,但没有哪个单一的技术能够“包治百病”.例如,WAF不能帮助企业避免应用逻辑错误,然而,对于运行很多动态代码的复杂Web 2.0应用,或者底层网络和操作系统级漏洞,这是很容易出现的错误。但它还有后续成本。WAF具有广泛的日志记录功能,管理员需要登录分析仪来利用这些日志信息。
这正是安全编码和编码审查发挥价值的地方。通过在代码水平解决问题,不仅降低了任何与安全有关的设计和编码缺陷的数量和严重程度,而且显着提高了整体应用安全性。虽然未来的代码修订版仍然需要审查,但采用安全开发做法开发的应用不需要与那些完全依赖于防火墙保护的应用一样持续维护。
在这种情况下,也许最好的反驳是:微软在推出其安全开发生命周期(SDL)后,显着提高了其产品安全性。SDL为整个软件行业制定了标准,很多其他公司(包括思科和Adobe)都采用SDL或者基于SDL建立起安全开发的做法。我们可以从很多方面感受到微软取得的成功,比如在推出产品一年后产品中发现的漏洞数量的变化。在Windows Vista(Vista是第一个使用SDL开发的微软操作系统)推出一年后,与未采用SDL的Windows XP的漏洞相比要少了45%;SQL Server 2005比未采用SDL的SQL Server 2000的漏洞相比要少91%.
在部署更好的内部软件开发安全最佳做法后,企业不需要完全依赖WAF来成功阻止针对其应用的攻击。从安全的角度进行编码让应用更加强大,这降低了攻击面,并提高了抵御攻击的能力。WAF永远无法防止每一个漏洞被攻击者利用,而对于攻击者而言,编码漏洞更少的应用不再那么有吸引力。