安全软件开发的三大错误
作者: 日期:2016年02月22日 阅:3,864

许多开发人员如今已经认识到安全软件开发的重要性,但更重要的是,我们必须明白,计划进行安全软件开发和实现它并不是同一回事。

640.webp

实际上,一些软件开发公司首先得将安全完全集成到他们的开发过程中来。时间和资金限制是公司面临的常见阻碍,但开发人员的错误同样能造成该集成过程的延迟或错误导向。

下面是开发人员容易犯下的三大错误:

错误 #1:项目最后才匆忙上马安全

公司企业必须在开发过程之初就有一个安全计划。这种前瞻性可以让开发人员采用安全的架构和设计方法,也能更容易地保证代码的整体安全。一个制定良好的安全计划,对今天的软件用户而言尤其重要,他们期望开发人员给他们提供安全的产品。

当你推迟项目某个子系统的安全工作,稍后你将不得不对整个系统的很大一部分进行返工和重新测试。你当然可以延迟日志之类代码库才关心的事,但如果你因为复杂和昂贵而推诿系统访问控制的实现,那你就错过或低估了重要的项目需求。

错误 #2:没能利用好安全软件开发工具和专门技术

公司企业要能经受得住在软件中采用自己的安全方法的引诱。尤其是在身份验证模型、加密和其他复杂功能方面。没必要重新发明轮子。开发人员只要利用好别人经过验证的安全代码和过程就好。时间已经证明了这些解决方案是切实有效的,换句话说就是,这些前人的经验能够帮助开发人员增加对自身项目安全的自信。

从静态代码分析到渗透测试,当今世界有那么多的资源可以利用,我们再没有借口不在产品发布之前搞清它的安全状况了。而且,还有很多诸如OWASP、SAFECode、BSIMM等公司可以帮你理解怎样打造一个安全的程序。

错误 #3:使用带缺陷的库组件,继承了其他开发者的安全漏洞

开发团队需要确保清楚得知道所用的每个库,以及从其他源引入的代码的出处。还需要查明产品用到的任何第三方代码中使用的安全验证、威胁模型和其他安全保障措施。

从安全和缺陷暴露的角度出发,引入第三方库和框架是一项十分危险的操作。开发外包并不能免除你尽职审查和测试所用代码的职责。近期曝出的Java远程方法调用(RMI)反序列化和Apache Commons Collections库的CWE-502问题就是这方面一个很好的例子——在类路径里包含了这个库本身就暴露出了问题,无论这个库是否被调用。

总结

“模糊不清的安全”要不得。有些开发人员要么将安全实现隐藏起来,要么认为非常复杂的实现能让产品更安全。事实上,建立在已证方法基础上的有效安全实现才更能通过同业审查,而同行审查是增加软件交付前安全缺陷检出率和解决率的良好安全的基石。

然而,不幸的是,很多软件开发团队依然试图在开发末端才解决安全问题。这样是不行的。

要想产生预期效果,安全必须融入整个开发过程,从项目计划初期贯穿到产品部署使用。

任何在产品预定发布时间前夕经历过数据泄露,或收到出人意料的渗透测试结果的人,都相当清楚在开发周期末尾添加安全的痛苦。今天,由于物联网设备和无处不在的计算环境,开发人员理解问题和在实际环境中应用安全措施的压力日渐增大。将安全贯彻始终似乎是一项巨大的投入,但第一时间就做对的花费,绝对比问题出现后再补救的代价要小得多。

 

 

关键词:

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章