代码安全编程规范(代码质量与安全)(1)

代码安全编程规范(代码质量与安全)(2)

在任何新的软件开发项目开始时,您就应该考虑软件安全。开始一个新项目或许会令人望而生畏,因为有许多的决定要做,有许多想法必须考虑清楚。通常来说,这些决定和想法包括了定义项目需求、选择正确的流程、选择正确的工具以及确保软件安全。

为此,Perforce提供了一个循序渐进的分步指南,引导您完成一个新项目中最耗时和最困难的挑战,帮助您的项目获得成功。

开发安全软件所需的安全编码实践

一个安全的软件开发最佳实践可以简单地分为以下四个主要部分:

  1. 了解您的项目需求;
  2. 定义您的软件开发流程;
  3. 为您的项目选择合适的工具;
  4. 设置DevSecOps。

像Perforce公司的静态代码分析(SAST)工具Klocwork可以在每个部分帮助您满足推荐指南的要求。

了解您的项目需求

在项目开始时,有几个因素是需要您考虑的。通过审视这些因素,您能更好地了解项目需求。

项目概述

首先,您需要花时间了解项目本身,并提出有助于指导整个开发生命周期决策的问题。比如:

定义项目愿景

对应用程序将提供什么内容有一个构思,这有助于设定指导性的工作目标。通过制定一个针对客户问题、痛点以及应用程序将如何解决这些问题的明确说明,有助于确保您提供的解决方案是正确的。

确定合规性要求

你需要确保作为项目的一部分,行业、供应链、业务或客户需求是否存在代码合规性要求。

此外,您还需要确定需要什么级别的保障、安全或质量合规性。这可能包括以下编码标准:

从项目开始时就选择并遵循一个标准,就能减少未来将面对的合规性难题。

选择灵活的编程语言

确保您的编程语言(无论是 C、C 、C#、Java 还是 JavaScript)是最适合您的项目的。选择最合适的编码语言能为您带来以下好处:

选择什么语言可以决定您的软件是否保持相互关联,以及保持生命力。

制定设计规范

花点时间来制定一个设计规范,这样您就能验证系统逻辑,确定所有组件是否能够正确地一起执行,并帮助确保软件安全。这可能就是成功的发行与代价巨大的重新设计之间的区别。

建立代码架构

规划出您的代码库,确保其井井有条。请务必考虑以下事项:

提前完成了这项工作,您就为开发人员提供了一个清晰的模板,让未来能更轻松地进行维护。

定义软件开发流程

虽然对于您的项目需求和要求来说,软件开发流程是独一无二的,但建议您考虑以下几点:

确定需要实施哪些软件安全最佳实践

根据行业的不同,您的开发项目可能需要遵循特定的最佳实践和标准。此时,您应该让项目要求与开发过程保持一致。这可能包括遵循功能安全标准(如IEC 61508)和安全编码实践(如CERT或CWE)。

像Klocwork这样的静态代码分析工具可以帮助您践行项目可能需要遵循的任何标准、最佳实践和条件。

统一开发方法

无论是敏捷或瀑布,Scrum或看板,还是您目前采用的任何其他方法,这都无关紧要。重要的是,您要使开发过程与您的业务、开发人员和开发团队打算交付项目的方式保持一致。

统一方法的目的是为了有一个确保组织和沟通的过程,并帮助防止开发过程中出现的问题。

设置您的环境

一般来说,确定并创建项目所需的环境来确保整个团队使用相同的设置非常重要。最佳实践表明,应该为开发、用户验收测试(UAT)、预发和生产设置单独的环境。

使用存储库工具

使用版本控制工具(如Perforce Helix Core)来建立源代码存储库,让您的开发团队能够:

除了代码存储库之外,您还应当考虑使用其他工具或流程来存储和跟踪其他与项目有关的内容。这包括:

通过建立这些存储库,您能确保您的开发高效、内容安全,并且知识易于获取,新开发人员能快速上手。

通过安全编码实践加强软件安全

通过遵循安全编码实践,在开发过程中构建安全执行,并使用安全编码工具帮助强制执行合规性。此外,您需要为团队提供安全培训和学习材料,发展安全文化。

将检查纳入开发流水线中

在整个开发流水线中实施安全检查,有助于强制执行良好的编码实践。在开发代码时,请务必时刻保持安全意识。建议您在开发人员的IDE、CI/CD流水线以及夜间集成构建期间使用SAST扫描。

出于测试和重构目的,请确保让开发人员编写单元测试,质量保证人员编写功能测试。请考虑所有可能的测试策略,并尽可能地创建并自动化安全和其他测试。

对您的项目任务和功能有一个“完成”的定义

即使任务或功能看起来已经完成了,并已经在开发人员桌面上编译了,也是不够的。你需要有一个明确的流程来定义工作——从头到尾。

最佳做法包括以下几点:

鼓励反馈和沟通

团队和开发人员之间的反馈和沟通对于项目能否成功起着关键性作用。

重要的是,让您的开发人员能够在代码提交后获得快速反馈,他们才能及早解决编码问题,并为其他相关人员提供有关项目进度、指标和潜在风险的信息。

除了自动化,为开发人员提供足够的时间进行代码审查、规划和回顾也非常重要。这些都将有助于确保高速开发,因为不会再有交流不畅的情况了。

为您的项目选择合适的工具

项目中还有一个重要部分是选择正确的工具。工具的选择很重要,因为它有助于将项目标准化,并使团队中的每个人都能“同频交流”。它从以下四个方面为整个团队带来了好处:

为了帮助确保为团队选择的工具集是最有效的,您需要考虑以下几点:

无论您选择哪种工具集,都建议它包括以下内容:

为您的软件开发项目建立DevSecOps

DevSecOps是一项必不可少的软件安全最佳实践,它将DevOps的速度和规模与安全编码实践结合起来。通过采用DevSecOps方法,您可以:

选择Perforce工具,确保软件安全性和项目成功

用于C、C 、C#、Java、JavaScript、Python和Kotlin的SAST工具Klocwork可以识别安全、质量和可靠性问题。这有助于强制遵守编码标准,确保代码免受安全漏洞的影响。Klocwork的设计易于扩展到任何规模的项目,它为你提供了在编写代码时自动进行源代码分析的能力。

此外,Klocwork的差异分析使您能够仅对已更改的文件进行快速的增量分析,同时提供相当于完整项目扫描的结果。这会帮助您缩短分析时间。

通过使用Klocwork,您还能收获:

作者简介

代码安全编程规范(代码质量与安全)(3)

斯图尔特·福斯特(Stuart Foster),Klocwork和Helix QAC产品经理,Perforce

斯图尔特·福斯特在移动和软件开发方面拥有超过10年的丰富经验,负责管理消费应用和企业软件的产品开发。目前,他负责管理Klocwork和Helix QAC——Perforce的代码质量管理解决方案。他致力于开发符合客户业务需求的产品、特性和功能,并帮助开发人员生成安全、可靠、无缺陷的代码。斯图尔特拥有Carleton大学的信息技术、交互式多媒体和设计学士学位,以及Algonquin应用艺术与技术学院的多媒体设计高级文凭。

文章来源:http://bit.ly/3jJCvy8

,