介绍了开发人员如何解决复杂系统中的漏洞、组织如何更好地支持安全编码实践,以及语言和框架在安全开发中的作用。
现代软件系统越来越复杂,开发人员可以采取什么策略来解决这种复杂性带来的隐藏漏洞?
如今,开发人员可以利用一系列相当新颖的策略,这些策略可以显著改善源代码安全性,并消除处理规模和复杂性方面的传统障碍。
要消除的一个简单但重要的障碍是上下文切换。首先在开发人员已经使用的开发工具(例如 IDE 和代码存储库)中提供安全功能,并让开发人员能够在构建和管理源代码的本地工作流程中与安全信息进行交互。
接下来,我们绝对需要停止向开发人员提供大量误报漏洞,而是提供真正的漏洞发现,并附带升级选项的具体影响分析。这种决策支持使开发人员能够快速正确地做出一系列决策,而不会浪费时间和精力。那些日子已经过去了。
这些技术改进可将修复源代码漏洞所需的时间/精力减少 99%。消除这些摩擦和精力后,我们处理复杂性的能力大大增强,专注于解决规模和复杂性问题,这是我们产品战略的功能。
为什么有些开发团队需要帮助来遵守安全编码指南,以及组织如何更好地支持他们的团队?
没有两个开发人员以相同的方式解决问题或构建软件产品。有些人通过正规的大学教育进入职业生涯,而其他人则是自学成才,几乎没有得到过任何指导。风格和经验千差万别。同样,我们应该期望他们会以类似的思想多样性来考虑安全编码实践和指南。
组织必须在其安全开发实践(培训、指南、标准)中考虑到这种多样性。即使对于非常熟练的开发人员来说,这些概念也可能是陌生的,我们需要为开发人员提供学习和提问的时间和空间,并留出足够的时间来提高安全编码能力。
我们可以为最终的熟练程度设定一个期望,但突然指责开发人员会产生与预期相反的效果——我们将失去他们的注意力和参与度。安全编码是一个过程,我们的组织应该专注于支持和衡量长期进展。
组织可以采取哪些措施在分散或远程工作环境中始终如一地应用安全编码原则?
一流的组织已经建立了“安全冠军”计划,让高技能的开发人员成为团队层面的安全编码知识和最佳实践资源,以便传播机构知识。这在远程环境中尤为重要,因为安全团队可能不熟悉或不可信,而内部开发团队领导者在为采用安全思维和应用安全原则定下基调和方向方面则更为重要。
开发团队可以将安全黑客马拉松等活动用作远程团队建设练习,并让团队以富有成效的方式团结起来并不断进步。
是否有特定的编程语言或框架更适合安全开发?如果有,为什么?
Rust 和 Go 等较新的语言有几个安全第一的原则,例如内存安全。Django 框架内置了针对 SQL 注入和跨站点脚本的保护措施,这些措施多年来一直困扰着 Web 应用程序的安全。这些都是重要的增强功能,但最终语言和框架的选择对最终软件产品的底层安全性影响很小。
多年来,语言的一个方面不断出现,那就是底层支持社区——致力于维护和提高语言和框架质量的社区不断可靠地添加新的安全功能。与此同时,没有强大社区的框架和语言往往会随着时间的推移而萎缩,从而导致更严重的安全问题。
原文始发于微信公众号(网络研究观):通过更智能的开发策略解决软件漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论