0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

安全软件开发最佳实践指南

北汇信息POLELINK 2022-12-07 17:00 次阅读

在任何新的软件开发项目开始时都应考虑软件安全性。开始一项工作可能会让人望而却步,因为需要做出许多决定,并且必须仔细考虑。这通常包括定义项目需求、选择正确的流程、选择正确工具和确保软件安全。

出于这个原因,我们组织了一个循序渐进的指南,帮助您完成新项目中最耗时和最困难的挑战,以确保您的项目取得成功。

安全软件开发最佳实践
安全的软件开发最佳实践可以简单地分为四个主要部分:
1. 了解您的项目要求
2. 定义软件开发流程
3. 为项目选择合适的工具
4. 设置DevSecOps

SAST 工具(如Klocwork)可以帮助您满足每个部分的建议指南。

了解您的项目要求

在项目开始时,您需要考虑几个因素 。通过查看这些内容,它将帮助您更好地了解您的项目要求。

概述项目
花时间了解项目本身,并提出有助于指导整个开发生命周期决策的问题。像这样的问题:
•正在开发什么类型的项目?(嵌入式、云服务、前端/后端软件等)
•这个项目面向哪个行业?( 汽车 、 航空航天 、企业、 医疗 、 金融 等)
•软件将如何使用以及在什么设置下使用?(企业、中小企业、B2B、B2C等)

定义项目愿景
对应用程序将提供的内容有一个愿景,有助于为工作树立一颗指路明灯。通过制定客户问题、痛点以及应用程序将如何解决这些问题的明确规范,将有助于确保您提供正确的解决方案。

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

此外,您还需要确定需要什么级别的信息安全、功能安全和质量合规。这可能包括编码标准,例如:
• CWE
• CERT
• CVE
• OWASP
• DISA-STIG
• MISRA
• AUTOSAR

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

选择灵活的编程语言
确保您的编程语言(无论是 C、C++C#Java或JavaScript)-最适合您的项目。选择最合适的编码语言可为您带来以下好处:
•易于开发
•代码的可维护性
•接触熟练的开发人员
•明确的编码标准和最佳实践

您选择的语言可以决定您的软件是否保持价值和活力。

开发代码设计
花时间制定设计规范。通过这样做,您能够验证系统逻辑,确定所有组件是否将一起正确执行,并帮助确保软件安全。这可能意味着成功发布和代价高昂的重新设计之间的区别。

建立代码架构
规划您的代码库以确保其井井有条。请务必考虑以下事项:
•文件命名约定
•为项目定义模块
•层次和结构

通过提前完成这项工作,您可以为开发人员提供一个清晰的模板去遵循,以便将来更轻松地进行维护。

定义您的软件开发流程

虽然您的开发过程对于您的项目需求和要求是独一无二的,但我们建议您考虑以下几点:

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

静态分析器 (如 Klocwork )可以帮助执行项目可能需要的任何标准、最佳实践和条件。

与开发方法保持一致
无论您的开发过程是Agile/Waterfall, Scrum/Kanban还是您当前可能拥有的任何其他过程,都无关紧要。重要的是,您需要在适合您的业务、开发人员和开发团队打算交付项目的方式的开发流程上保持一致。

在方法上保持一致的目的是拥有一个确保组织和沟通以及帮助防止开发过程中出现问题的过程。

组织您的环境设置
一般来说,确定并创建项目所需的环境以确保整个团队使用相同的设置非常重要。最佳做法是,应为以下对象设置单独的环境:开发、用户验收测试 (UAT)、阶段化和生产。

使用存储库工具
使用版本控制工具(如 Helix Core )建立源代码存储库。这使您的开发团队能够:
•花更少的时间处理工具和流程。
•停止在手动工作流程上浪费时间,使他们能够重新开始编码。
•高效处理数以万计的文件以及数PB级的数据。
•将代码中的更改内容与更改原因联系起来。

除了代码存储库之外,还应考虑使用其他工具或流程来存储和跟踪其他与项目相关的内容。这包括:
•将项目使用的工具和组件保留在整个团队可以轻松使用的地方。
•为计划、文档和开发人员入职提供中心位置。
•在项目管理软件(如Helix ALM)或问题跟踪软件中定义工作任务。

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

通过安全编码实践强制实施软件安全性
通过遵循安全编码实践,将安全实施构建到开发过程中,并使用安全编码工具帮助强制实施合规性。此外,为您的团队提供安全培训和学习材料,以帮助发展安全文化。 SAST 工具(如Klocwork)可以帮助解决这些问题。

将检查合并到开发管道中
在整个开发管道中实施安全检查有助于强制实施良好的编码实践。在开发代码时,请务必注意安全,建议您在开发人员的 IDE、CI/CD管道 中以及在持续集成构建期间使用SAST扫描。

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

为您的项目任务和功能定义“完成”
即使任务或功能看起来已完成并在开发人员的桌面上编译,但事实并非如此。你需要有一个明确的流程来定义工作——从头到尾。

最佳做法包括:
•需求捕获
•工作范围
•定义验收标准
•为代码开发单元和功能测试用例
•进行 同行代码评审
•集成测试、安全测试以及从所有阶段到最终环境测试的自动化

鼓励反馈和沟通
团队和开发人员之间的反馈和沟通对于项目的成功至关重要。

重要的是,您的开发人员能够从代码提交中获得快速反馈,以便他们能够及早解决编码问题,并为项目干系人提供有关项目进度、指标和潜在风险的见解。

在自动化之外,为开发人员提供足够的时间进行代码审查、规划和回顾非常重要。这些都将有助于确保在消除通信障碍时保持高开发速度。

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

项目的一个重要部分是选择正确的工具。工具选择很重要,因为它有助于标准化您的项目,并使团队中的每个人都能“说同一种语言”。这为以下方面提供了整个团队的好处:
•生产力
•公共知识
•测试和调试
•入职

为了帮助确保为团队选择最有效的工具集,请考虑以下准则:
•研究和查看所有工具选项,并根据项目和团队要求对其进行评估。
•了解工具选择的成熟度以及可用的支持类型,例如技术支持、帮助资源和主动维护。
•考虑工具、团队的经验水平以及招聘新开发人员的能力将受到怎样的影响。
•检查工具集之间的兼容性。

无论您选择哪种工具集,我们都建议它包括以下内容:
•代码存储库和版本控制 ,用于跟踪和管理对源代码、数字资产和大型二进制文件的更改。
•静态代码分析器和SAST工具,用于强制实施安全编码实践,并识别缺陷、漏洞和合规性问题。
•应用程序生命周期管理工具在项目的整个 应用程序生命周期 管理中提供端到端的可追溯性。

为您的软件开发项目设置 DevSecOps

将 DevOps 的速度和规模 与安全编码实践相结合 ,DevSecOps是必不可少的软件安全最佳实践。通过遵循DevSecOps方法,您可以:
•尽可能多地自动化流程—安全性、配置、管理、测试等。这将为开发人员腾出时间专注于新的代码和功能。
•定义成功/失败指标,并主动监控和报告项目结果。这有助于您更快地发现问题和漏洞,做出更明智的决策,并在整个应用程序中强制实施项目要求。
•采取措施保护您的基础架构。安全性不仅对您的最终产品很重要,而且对您公司的程序和政策也很重要。确保您从整体上考虑安全性,并从上到下促进安全文化。
•持续监控和实施软件安全合规性。将安全工具(如SAST、DAST和SCA)集成到DevSecOps管道中,以便在整个开发生命周期中主动跟踪和实施安全性。

选择Perforce工具以确保项目成功
Klocwork SAST for C,C++,C#,Java,JavaScript,Python,and Kotlin 可识别安全性、质量和可靠性问题。这有助于强制遵守编码标准,以确保您的代码免受安全漏洞的影响。Klocwork旨在轻松扩展到任何规模的项目,使您能够在编写代码时自动进行源代码分析。

此外,Klocwork的差异分析使您能够仅对已更改的文件执行快速增量分析 ,同时提供与完整项目扫描结果相同的结果。这确保了尽可能短的分析时间。

通过使用Klocwork,您还将获得以下好处:
•在开发早期检测代码漏洞、合规性问题和规则冲突。这有助于加快代码审查和手动测试工作。
•执行行业和编码标准,包括CWE、CERT、OWASP和DISA STIG。
•报告一段时间内和跨产品版本的合规性。

了解 Klocwork 如何帮助确保您的下一个项目取得成功。注册免费试用版。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4803

    浏览量

    68754
收藏 人收藏

    评论

    相关推荐

    DevSecOps自动化在安全关键型软件开发中的实践、Helix QAC& Klocwork等SAST工具应用

    DevSecOps自动化旨在通过在软件开发生命周期的各个阶段集成安全流程,使用自动化工具和最佳实践来简化开发
    的头像 发表于 01-03 16:05 96次阅读
    DevSecOps自动化在<b class='flag-5'>安全</b>关键型<b class='flag-5'>软件开发</b>中的<b class='flag-5'>实践</b>、Helix QAC&amp;amp; Klocwork等SAST工具应用

    BQ7690x软件开发指南

    电子发烧友网站提供《BQ7690x软件开发指南.pdf》资料免费下载
    发表于 11-07 10:19 1次下载
    BQ7690x<b class='flag-5'>软件开发指南</b>

    活动回顾 艾体宝 开源软件供应链安全最佳实践 线下研讨会圆满落幕!

    艾体宝与Mend举办研讨会,聚焦开源软件供应链安全,邀请行业专家分享合规管理、治理之路及最佳实践,圆桌讨论加深理解,助力企业更安全稳健发展。
    的头像 发表于 10-30 17:52 498次阅读
    活动回顾 艾体宝 开源<b class='flag-5'>软件</b>供应链<b class='flag-5'>安全</b>的<b class='flag-5'>最佳</b><b class='flag-5'>实践</b> 线下研讨会圆满落幕!

    华为云联合中国信通院发布 智能化软件开发落地实践指南

    9 月 19 日,在华为全联接大会 2024(HUAWEI CONNECT 2024)上,华为云联合中国信通院及合作伙伴,重磅发布国内首部《智能化软件开发落地实践指南》(下称《指南》)
    的头像 发表于 10-09 20:13 630次阅读
    华为云联合中国信通院发布 智能化<b class='flag-5'>软件开发</b>落地<b class='flag-5'>实践</b><b class='flag-5'>指南</b>

    PGA460软件开发指南

    电子发烧友网站提供《PGA460软件开发指南.pdf》资料免费下载
    发表于 10-09 10:30 0次下载
    PGA460<b class='flag-5'>软件开发指南</b>

    PGA450-Q1软件开发指南

    电子发烧友网站提供《PGA450-Q1软件开发指南.pdf》资料免费下载
    发表于 09-30 14:25 0次下载
    PGA450-Q1<b class='flag-5'>软件开发指南</b>

    ECU电控软件开发及测试介绍

    本文重点介绍符合AutoSar架构的应用软件开发、MBD开发模式下的软件质量评估与优化方案、复杂场景下的ECU性能压力测试方案。
    的头像 发表于 09-26 14:25 3445次阅读
    ECU电控<b class='flag-5'>软件开发</b>及测试介绍

    TUSS44x0软件开发指南

    电子发烧友网站提供《TUSS44x0软件开发指南.pdf》资料免费下载
    发表于 09-14 10:59 0次下载
    TUSS44x0<b class='flag-5'>软件开发指南</b>

    BQ769x2软件开发指南

    电子发烧友网站提供《BQ769x2软件开发指南.pdf》资料免费下载
    发表于 08-26 09:12 0次下载
    BQ769x2<b class='flag-5'>软件开发指南</b>

    RTOS开发最佳实践

    基于RTOS编写应用程序时,有一些要注意事项。在本节中,您将学习RTOS开发最佳实践,例如POSIX合规性、安全性和功能安全认证。
    的头像 发表于 08-20 11:24 475次阅读

    BQ769x2 软件开发指南

    电子发烧友网站提供《BQ769x2 软件开发指南.pdf》资料免费下载
    发表于 08-12 14:41 0次下载

    2024 ACT汽车软件安全技术周 龙智即将携全方位汽车软件开发解决方案亮相,助力应对汽车软件开发功能安全

    ,分享推动汽车软件开发与功能安全的创新实践。 ATC作为汽车技术会议领域的领先平台,专注于汽车电子与软件版块的技术交流将近10年历程,深耕行业问题,触达客户需求。 2024年7月18-
    的头像 发表于 07-08 16:17 570次阅读
    2024 ACT汽车<b class='flag-5'>软件</b>与<b class='flag-5'>安全</b>技术周 龙智即将携全方位汽车<b class='flag-5'>软件开发</b>解决方案亮相,助力应对汽车<b class='flag-5'>软件开发</b>功能<b class='flag-5'>安全</b>

    汽车网络安全-挑战和实践指南

    汽车网络安全-挑战和实践指南
    的头像 发表于 02-19 16:37 546次阅读
    汽车网络<b class='flag-5'>安全</b>-挑战和<b class='flag-5'>实践</b><b class='flag-5'>指南</b>

    keil arm软件开发指南

    电子发烧友网站提供《keil arm软件开发指南.pdf》资料免费下载
    发表于 01-26 15:51 7次下载

    嵌入式软件开发软件开发的区别

    嵌入式软件开发软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入在硬件设备中的软件,而
    的头像 发表于 01-22 15:27 2343次阅读