在做好安全软件开发的准备之后,开发团队还需要清楚安全编码的原则。这是开发任何健壮、安全软件的重要基础。 保持代码的简洁 代码库越小越简单,就越容易验证软件的安全性。有些代码的功能强大,可能会造成严重的后果,通过减少实现这些功能的源代码模块的大小,就可以极大地减少代码中的漏洞数量。
在此,列示几个缩短和简化代码的方法: 1、确保软件仅包含所要求或规定的功能。增加不必要的功能会增加软件的攻击面,并增加软件被破解的可能性。 2、尽可能地将大的或复杂的功能分解为更小、更简单的功能。这会使系统更易于理解和记录,在验证个别组件、整个系统的安全性和正确性……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
在做好安全软件开发的准备之后,开发团队还需要清楚安全编码的原则。这是开发任何健壮、安全软件的重要基础。
保持代码的简洁
代码库越小越简单,就越容易验证软件的安全性。有些代码的功能强大,可能会造成严重的后果,通过减少实现这些功能的源代码模块的大小,就可以极大地减少代码中的漏洞数量。
在此,列示几个缩短和简化代码的方法:
1、确保软件仅包含所要求或规定的功能。增加不必要的功能会增加软件的攻击面,并增加软件被破解的可能性。
2、尽可能地将大的或复杂的功能分解为更小、更简单的功能。这会使系统更易于理解和记录,在验证个别组件、整个系统的安全性和正确性时也更为轻松。
3、在构建系统时尽量使其依赖关系尽可能地少。这样做有一好处,即能够确保在不影响整个系统操作的前提下就可以禁用或替换任何过程模块或组件。
4、对软件进行封装,限制泄露敏感信息,限制外部所造成的影响。
软件开发团队还应当考虑软件的大小和简易性之间的平衡关系。如果将功能分解成太多的小功能,在查看不同的功能如何协同工作时,就会存在困难。
确保可以向前和向后追溯源代码
开发团队应当使软件易于跟踪每个要求,跟踪其设计形式,以便于追溯其源代码。当然,开发团队还要使软件能够根据代码的形式,追查其实现的每一个需求。
代码的可重用性和可维护性
使代码安全(简易、可理解、可跟踪)的一些特性也有助于代码的可重用性和可维护性。如果代码很容易被重用,其安全性就可以传递给未来的软件项目。如果代码易于维护,在维护过程中就不太可能增加漏洞。
开发团队应当尽力构建可以预测未来事件的代码。要确保软件需要的所有值源自数据库或外部的属性文件,而不是源自硬编码(硬编码是指在计算机程序中将变量用一个固定值来代替)。例如,在JAVA中,可考虑在方法签名中使用输入对象的bean可重用组件,而不是指定数据类型和预期值。这会使程序的功能按照需要而变化,并实现代码重用。
遵循安全编码的标准和指南
某些特定语言已经有了明确的安全编码的实践和模式,开发团队应当优先选择并采用其安全编码的标准和指南。否则,团队将不能避免在软件开发中出现常见的编码漏洞和潜在的易受攻击的软件架构。开发团队应当积极地选择应对这些缺陷的安全方法。这些标准和指南既涉及到编码过程的错误做法和正确做法。例如,美国的卡内基梅隆软件工程学院就发布了C、C++、JAVA等语言的著名安全编码标准(https://www.securecoding.cert.org)。
还有一个大名鼎鼎的标准,即汽车工业软件可靠性联会(MISRA)标准,它虽然不是专为解决软件安全而制定的标准,但它确实可以作为编码指南的一个例子。该机构是相关行业汽车制造商和公司的协会,其用户早已经超出了汽车行业。它为C和C++语言创建了安全编码指南,并为嵌入式电子系统提供了有关可靠性的最佳实践。改善代码的质量是改善代码安全性的一个重要部分。
在确定好标准之后,开发团队应当对软件执行一致性测试,判定编码是否正确地遵循了选定的编码标准。CERT的源代码分析试验室(SCAL)提供了针对CERT的C语言安全编码标准的系统一致性测试。成功通过一致性测试的软件就可以得到CERT加盖的一致性测试印章。
相关推荐
-
软件开发:安全编码的九个最佳方法(三)
程序员可以使用攻击模式来确认相关攻击所针对的特定编码缺陷,并确保这些缺陷不会出现在其代码中。
-
软件开发:安全编码的九个最佳方法(二)
软件应当只保留最少的所需状态的信息,并且应当经常清除写到高速缓存中的数据和磁盘临时文件中的数据。
-
软件开发:安全编码的九个最佳方法(一)
开发团队的所有成员应当清楚常见的编程错误及原因和减少错误的方法,以及这些内容对当前软件项目的适用性。
-
易被忽视的五大安全编码原则
如今,很多培训软件开发人员的机构并不培训如何安全地编码。解决软件安全问题的最佳策略就在于程序分析、开发、测试阶段对安全性的考虑。