Web应用程序是当今多数企业应用的前沿阵地。Web应用程序在一个复杂的混合性架构中可以发挥多种不同的功能。其涉及范围极广,从在最新的云技术上运行的面向服务的方案,到较老的多层Web应用程序,再到准许客户访问大型主机上老应用程序的Web入口,都有其应用。

管理与这些复杂的Web应用程序相关的风险是公司的必然要求,而且运行这些Web应用程序的底层代码的安全性直接影响到公司应用程序可用数据的风险态势。不幸的是,开发可重复的高效Web应用程序的安全实践并非一项简单任务。许多单位试图运用后生产(post-production)解决方案来提供安全控制,如Web应用防火墙和***防御系统等。

但是一直等到生命周期的生产阶段才部署安全机制有点儿太迟,其效用也太小。设计或架构问题在生命周期的早期阶段更容易解决,如果等到应用程序投入生产之后再“亡羊补 牢”,其所花费的成本将极其高昂。Web应用程序的安全漏洞可导致数据泄露、违反策略,而且,在部署后再打补丁或进行全面的代码修复都会极大地增加总成本。

为保证效益和效率,Web应用程序的安全必须从需求的定义阶段开始,直至最后的接收阶段。这种方法要求全体设计人员在整个过程中能够作为一个团队通力合作。在实施和测试等阶段,使用遵循策略的自动化工具能够支持可重复的测试,并且随着测试过程的标准化可以使开发周期更快。

在开发过程的最初阶段就着手构建安全性未必很复杂。在整个开发周期实施安全检查和平衡,可以实现更快的发布周期,并可以极大地减少Web应用程序的漏洞。

在开发周期的后期实施安全测试的高昂成本

将安全检查点加入到开发过程中,确实可以减少总体交付时间。这听起来有点儿违反直觉,但是,在Web应用程序部署进入生产阶段之后,与纠正设计错误和代码错误相关的成本是极其高昂的。

例如,在许多开发环境中,安全和审核专家往往出现在开发周期结束之时。此时,应用程序已经完成,任何延误都被看作是多余的瓶颈。企业方面要求软件产品快速推出,这种巨大的压力意味着可能会忽略安全控制,导致Web应用程序没有经过恰当的安全审查。在这种时间极端敏感的环境,即使扫描工具报告了大量的漏洞但却没有经过验证,也没有确定其优先次序,这种扫描也是弊大于利。

在开发过程的后期进行安全审计,而不是在整个开发周期中协力完成,会导致发布时间延迟,特别是在发现了某些严重的错误时尤其如此。在开发周期的后期修复设计和编码错误的成本远远高于早期发现错误所花费的成本。根据美国国家科学基金会的一项研究估计,如果在需求和设计阶段发现和纠正了严重的软件问题,其成本要比将软件投入生产之后再发现问题所花费的成本大约低100倍。

在Web应用程序中构建安全性时,在多数情况下,其目标并不是构建固若金汤的Web应用程序,或者清除每一处可能的漏洞。相反,目标应当是将所要求的特性与经认可的关于Web应用程序的风险预测匹配起来。在整个Web应用程序的开发周期中,其目标应当是实现软件担保,即与特定Web应用程序相适应的功能和敏感水平,能够有理由保证软件将会持续地实现其所要求的特性,即使软件遭受***也能够如此。