安全编码是软件开发的重要一环。通常来讲,对开发者而言,主要目标是编写出能正常工作的代码,但无论是对于新手还是经验丰富的程序员来说,了解安全编码都是很必要的。开发人员不小心放过了某个已知的漏洞进行非安全的编码,这就导致了程序中安全漏洞的出现。这样的漏洞可能会导致程序冲突或者触发拒绝服务攻击。无论如何,必须找到一个检测以及消除安全漏洞的方案。练习安全编码技术可以帮助程序避免产生安全脆弱点从而提高代码的质量。
诸如C和C++等编程语言从1970年代就开始用于构造低层次和高层次应用。这些语言在设计时更多考虑的是运行性能优异以及使用方便,安全并不在其考虑范围内。但是,随着越来越多的安全漏洞和攻击点被发现,C/C++内的安全缺陷越来越多的被指出。这就引出了一个关键问题:如何形成一套可行且有效的安全编码方案?
Java诞生于1995年并且被认为是安全性高于C/C++的一种编程语言。但是,如果采用了不安全的代码结构,开发人员依然在程序中引入安全缺陷。所以,Java也在研究范围内。
为开发一个安全应用,单纯的培养安全编码技能是不够的。实现安全必须要对软件开发整个生命周期进行防护。所以,安全软件开发生命周期(SDLC)也是一个重点研究对象。
1. 安全漏洞带来的额外工作量
- 脆弱性评估
- 补丁开发
- 补丁提取,安装和测试
- 补丁通知
- 补丁管理支持
- 补丁升级时导致的系统下线
实际上,如果考虑所有的因素,解决一个开发时产生的安全问题所花费的代价是在SDLC前期修复安全漏洞所需代价的60倍。如果带有安全漏洞的软件发布的话,可能会对公司资产造成损害,对公司的股价和品牌价值也会造成极大影响。