在IT行业里,软件开发人员是专业技术水平比较高的一类。高校每年都会生产出大量的计算机科学和软件工程毕业生,同时社会上也有不少软件开发培训机构,职场中的程序员们更是在不断学习和提升自己的水平。
看起来软件行业蓬勃发展,其实问题还很多。昆明亭长朗然科技有限公司的信息安全分析师James Dong表示:尽管我只是一名业余的软件开发人员,但是我能够充分理解程序员吃“青春饭”的不易。程序员中的职场新人往往并非能够立即挑大梁,往往从低阶的较简单的重复性工作干起,比如帮助部署和定制化一些软件,对软件系统做一些维护和技术支持工作。
新人在学习和熟悉的过程中不断扩张知识面,同时也在自己感兴趣和有更大需求的领域深度挖掘。软件开发知识的积累和能力的提升并不是短时间内可以轻松完成的,即使天资异常聪明的开发者也需要了解和掌握一堆系统化的知识。
不过虽然说这个世界很复杂,软件开发人员的知识面并不广阔,特别是那些局限的环境造就了许多视野不够宽广的蹩脚开发人员。亭长朗然公司James说:懒散的目光短浅程序开发人员往往只关心代码和配置,殊不知在不完善的管理体系和混沌的工作环境中需要的是全能性的“复合型”人才,即能理解业务信息需求并完成软件相关的所有分析、设计、开发、测试、交付和支持工作。这种软件开发人才很难找,更难的是还懂安全的软件开发人才。
我们是要说软件安全,却谈了这么久软件开发人员的问题。其实软件开发,编程写代码之类的硬能力很重要,更重要的是却是标准化的管理问题,很多软件外包公司要通过CMM标准认证,为什么?说到底,软件安全问题的核心是开发人员的安全管理问题!
尽管不少公司在整个软件开发生命周期中都极力遵从最佳的行业实践标准,代码审核和测试检验也在交叉进行,但是仍然会有很多造成安全问题的意外情况。从科学上讲,很难写出没有任何安全漏洞的软件,正常的软件被非正常的使用时,总可能搞出意外的结果,这就会造成很多程序溢出和提权攻击。
为什么软件缺少很多用户输入校验措施呢?为什么软件开发人员要假设用户都是正常的使用者呢?与期说开发时间紧迫,后期培训流程可以解决,倒不如说程序开发人员的安全敏感度不够,安全敏感度源自于安全认知。重视安全的老练的资深程序员会有一种“特异功能”,知道哪里会有安全问题或隐患,这些家伙们即使不是公司的资深救火员,也可转身便成为发现大牌软件漏洞的赏金高手。
懂安全的资深程序开发员毕竟是少数,难道这样就让大多数软件系统布满漏洞、遍体鳞伤吗?亭长朗然公司James说:软件安全不是渗透测试,不是代码扫描,也不是应用层防火墙,相反它是和人员安全意识密切相关的。内部的创意设计和开发团队需要了解软件安全的问题,我们需要并为他们提供合适的工具,流程和培训,进而帮助树立正确的安全防范意识。