对很多互联网企业来说, Web应用安全往往在开发过程中被忽略。VentureBeat的专栏作者John Jacott最近发表了一篇博文认为安全的第一个也是最重要的环节是程序员。 IT经理网编译如下:
如今,你随处都能听到各种各样Web应用被攻破的新闻。黑客们针对Web应用发起攻击,盗取敏感企业或个人数据等。各种黑客组织出于各种原因,针对不同的组织进行攻击。
绝大多数的企业,都是在Web应用设计结束后才开始考虑应用安全的问题。他们可能在应用开发结束后才进行安全测试,或者在应用正式上线前进行测试。 有的甚至在正式上线后才进行安全测试。其实,业界中有很多著名的公司就是这么做的。这也就是你为什么经常能够听到那些大公司的Web应用遭受攻击或者数据 被盗取的新闻。
造成这一情况的根源,在于应用安全与应用开发之间的脱节导致各种严重的安全漏洞。一般来说,应用开发程序员往往不是安全专家,而大部分安全专家则并不是程序员。因此,在对付应用安全问题上,需要这两方面的人员更好,更早地在开发过程中进行合作。
在开发早期就要重视质量控制(QA)
通常, QA是一个事后过程,或者是在开发后期才会考虑的问题。一个180天的开发项目,可能在最后20天是留给QA的,而安全测试则可能只有3天。
这样会产生几个问题,由于QA和安全测试在测试一个完整的应用程序,测试可能会发现一些严重问题,而这些问题需要程序员来解决。
这样问题来了,当这些问题被发现的时候,程序员可能已经结束项目了,在规定期限内完成了项目要求,或者已经去别的项目了。而这时候出现的安全问题可能已经不是程序员们需要解决的重点了。
程序员介入安全问题越早越好
程序员在早期介入安全问题,就意味着那些对应用最熟悉的人,能够有最多的时间和精力去解决安全问题。
我们不能指望在开发结束后,程序员转到另外的项目以后,才开始考虑安全问题。对安全问题的考虑,必须是渐进的,贯穿整个开发过程的。同样的,安全测试也是如此。
不少人都知道,程序员们一般都抵触安全问题,因为他们没有时间,没有能力,没法理解在完成应用的同时还要去满足一系列安全的要求。如果你开发一个产 品的同时还对你提出一堆安全性的要求。你可能也会这么认为。而且,你如何保证程序员们都是安全测试的专家,而安全测试的专家们又不介入程序开发。
不少网络安全公司都针对程序员进行一些如跨站攻击(XSS)的培训。然而,我们却发现这样的漏洞却越来越多。有些漏洞甚至都存在了15年。这样的培训往往不成功,因为很多企业并没有采取正确的开发流程。
安全测试人员要善于与程序员沟通
安全测试专家需要更好地了解应用开发的过程,需要给出程序员能够理解的明确要求。通过技术和流程来测试应用的质量和安全性以及代码的质量和安全性。
安全测试人员不要在项目结束后才提出测试要求。对代码的测试需要按照天为单位,或者在代码提交后就进行测试。对代码的缺陷要用程序员能够理解的方式告诉他们,并对他们如何修改提供具体的指导。
这也就是为什么企业需要在开发开始时就开始让程序员介入安全测试。程序员们对应用的熟悉程度最高,可以实时地处理发现的安全问题。
采取程序员优先的应用安全的最佳实践
尽管很多企业还没有意识到应用安全应该作为Web应用的一项重要的要求,也有不少企业已经意识到了。
这些企业理解应用开发过程。他们愿意让程序员去喝QA或者安全人员进行沟通。他们采取了一系列方式来倡导程序员优先的应用安全开发,包括培训,内部 奖励(比如对程序员冠以“安全专家”,比如搞一些促进程序员, QA和安全等不同小组之间合作的活动等等)。而这样的企业,能够开发出更好,更加安全的应用。