tft每日頭條

 > 科技

 > 代碼安全編程規範

代碼安全編程規範

科技 更新时间:2024-07-04 02:28:05

  代碼安全編程規範(代碼質量與安全)(1)

  代碼安全編程規範(代碼質量與安全)(2)

  在任何新的軟件開發項目開始時,您就應該考慮軟件安全。開始一個新項目或許會令人望而生畏,因為有許多的決定要做,有許多想法必須考慮清楚。通常來說,這些決定和想法包括了定義項目需求、選擇正确的流程、選擇正确的工具以及确保軟件安全。

  為此,Perforce提供了一個循序漸進的分步指南,引導您完成一個新項目中最耗時和最困難的挑戰,幫助您的項目獲得成功。

  開發安全軟件所需的安全編碼實踐

  一個安全的軟件開發最佳實踐可以簡單地分為以下四個主要部分:

  了解您的項目需求;定義您的軟件開發流程;為您的項目選擇合适的工具;設置DevSecOps。 像Perforce公司的靜态代碼分析(SAST)工具Klocwork可以在每個部分幫助您滿足推薦指南的要求。

  了解您的項目需求

  在項目開始時,有幾個因素是需要您考慮的。通過審視這些因素,您能更好地了解項目需求。

  項目概述

  首先,您需要花時間了解項目本身,并提出有助于指導整個開發生命周期決策的問題。比如:

  正在開發的是什麼類型的項目?(嵌入式、雲服務、前端/後端軟件等。)這個項目是針對哪個行業的?(汽車、航空航天、企業、醫療、金融等。)該軟件将如何使用,以及在什麼環境下使用?(企業、中小企業、B2B、B2C等。) 定義項目願景

  對應用程序将提供什麼内容有一個構思,這有助于設定指導性的工作目标。通過制定一個針對客戶問題、痛點以及應用程序将如何解決這些問題的明确說明,有助于确保您提供的解決方案是正确的。

  确定合規性要求

  你需要确保作為項目的一部分,行業、供應鍊、業務或客戶需求是否存在代碼合規性要求。

  此外,您還需要确定需要什麼級别的保障、安全或質量合規性。這可能包括以下編碼标準:

  CWECERTCVEOWASPDISA-STIGMISRAAUTOSAR 從項目開始時就選擇并遵循一個标準,就能減少未來将面對的合規性難題。

  選擇靈活的編程語言

  确保您的編程語言(無論是 C、C 、C#、Java 還是 JavaScript)是最适合您的項目的。選擇最合适的編碼語言能為您帶來以下好處:

  易于開發;代碼的可維護性;可以接觸到熟練的開發人員;明确的編碼标準和最佳實踐。 選擇什麼語言可以決定您的軟件是否保持相互關聯,以及保持生命力。

  制定設計規範

  花點時間來制定一個設計規範,這樣您就能驗證系統邏輯,确定所有組件是否能夠正确地一起執行,并幫助确保軟件安全。這可能就是成功的發行與代價巨大的重新設計之間的區别。

  建立代碼架構

  規劃出您的代碼庫,确保其井井有條。請務必考慮以下事項:

  文件命名規則;為項目定義模塊;層次和結構。 提前完成了這項工作,您就為開發人員提供了一個清晰的模闆,讓未來能更輕松地進行維護。

  定義軟件開發流程

  雖然對于您的項目需求和要求來說,軟件開發流程是獨一無二的,但建議您考慮以下幾點:

  确定需要實施哪些軟件安全最佳實踐 根據行業的不同,您的開發項目可能需要遵循特定的最佳實踐和标準。此時,您應該讓項目要求與開發過程保持一緻。這可能包括遵循功能安全标準(如IEC 61508)和安全編碼實踐(如CERT或CWE)。

  像Klocwork這樣的靜态代碼分析工具可以幫助您踐行項目可能需要遵循的任何标準、最佳實踐和條件。

  統一開發方法

  無論是敏捷或瀑布,Scrum或看闆,還是您目前采用的任何其他方法,這都無關緊要。重要的是,您要使開發過程與您的業務、開發人員和開發團隊打算交付項目的方式保持一緻。

  統一方法的目的是為了有一個确保組織和溝通的過程,并幫助防止開發過程中出現的問題。

  設置您的環境

  一般來說,确定并創建項目所需的環境來确保整個團隊使用相同的設置非常重要。最佳實踐表明,應該為開發、用戶驗收測試(UAT)、預發和生産設置單獨的環境。

  使用存儲庫工具

  使用版本控制工具(如Perforce Helix Core)來建立源代碼存儲庫,讓您的開發團隊能夠:

  減少處理工具和流程的時間;避免在手動工作流程上浪費時間,使他們能夠重新開始編碼;高效處理數以萬計的文件以及PB級的數據;将代碼中更改的内容與更改原因聯系起來。 除了代碼存儲庫之外,您還應當考慮使用其他工具或流程來存儲和跟蹤其他與項目有關的内容。這包括:

  将項目使用的工具和組件放在整個團隊都唾手可得的地方;為計劃、文檔和開發人員入職培訓提供一個核心位置;在項目管理軟件(如 Helix ALM)或問題跟蹤軟件中定義工作任務。 通過建立這些存儲庫,您能确保您的開發高效、内容安全,并且知識易于獲取,新開發人員能快速上手。

  通過安全編碼實踐加強軟件安全

  通過遵循安全編碼實踐,在開發過程中構建安全執行,并使用安全編碼工具幫助強制執行合規性。此外,您需要為團隊提供安全培訓和學習材料,發展安全文化。

  将檢查納入開發流水線中

  在整個開發流水線中實施安全檢查,有助于強制執行良好的編碼實踐。在開發代碼時,請務必時刻保持安全意識。建議您在開發人員的IDE、CI/CD流水線以及夜間集成構建期間使用SAST掃描。

  出于測試和重構目的,請确保讓開發人員編寫單元測試,質量保證人員編寫功能測試。請考慮所有可能的測試策略,并盡可能地創建并自動化安全和其他測試。

  對您的項目任務和功能有一個“完成”的定義

  即使任務或功能看起來已經完成了,并已經在開發人員桌面上編譯了,也是不夠的。你需要有一個明确的流程來定義工作——從頭到尾。

  最佳做法包括以下幾點:

  需求捕獲;工作範圍;定義驗收标準;為代碼開發單元和功能測試用例;進行同行代碼評審;對集成測試、安全測試以及直到最終環境測試的所有階段進行自動化測試。 鼓勵反饋和溝通

  團隊和開發人員之間的反饋和溝通對于項目能否成功起着關鍵性作用。

  重要的是,讓您的開發人員能夠在代碼提交後獲得快速反饋,他們才能及早解決編碼問題,并為其他相關人員提供有關項目進度、指标和潛在風險的信息。

  除了自動化,為開發人員提供足夠的時間進行代碼審查、規劃和回顧也非常重要。這些都将有助于确保高速開發,因為不會再有交流不暢的情況了。

  為您的項目選擇合适的工具

  項目中還有一個重要部分是選擇正确的工具。工具的選擇很重要,因為它有助于将項目标準化,并使團隊中的每個人都能“同頻交流”。它從以下四個方面為整個團隊帶來了好處:

  生産力;形成共識;測試和調試;更易上手。 為了幫助确保為團隊選擇的工具集是最有效的,您需要考慮以下幾點:

  研究和查看所有工具選項,并根據項目和團隊要求對其進行評估;了解工具選擇的成熟度以及有哪些類型的支持,如技術支持、幫助資源和主動維護;考慮工具、團隊的經驗水平以及招聘新開發人員的能力将受到怎樣的影響;檢查工具集之間的兼容性。 無論您選擇哪種工具集,都建議它包括以下内容:

  代碼存儲庫和版本控制,用于跟蹤和管理對源代碼、數字資産和大型二進制文件的更改;SCA和 SAST 工具,用于強制執行安全編碼實踐,并識别缺陷、漏洞和合規性問題;應用程序生命周期管理工具,在項目的整個應用程序生命周期管理中提供端到端的可追溯性。 為您的軟件開發項目建立DevSecOps

  DevSecOps是一項必不可少的軟件安全最佳實踐,它将DevOps的速度和規模與安全編碼實踐結合起來。通過采用DevSecOps方法,您可以:

  盡可能多地自動化流程——安全、配置、管理、測試等,開發人員就能騰出時間專注于開發新的代碼和功能;定義成功/失敗指标,并主動監控和報告項目結果。這有助于您更快地發現問題和漏洞,做出更明智的決策,并在整個應用程序中強制實施項目要求;采取措施保護您的基礎架構。安全性不僅對您的最終産品來說很重要,并且對您公司的程序和政策也很重要。确保您從整體上考慮安全性,并從上到下推進安全文化;持續監控和執行軟件安全合規性。将安全工具(如 SAST、DAST 和SCA)集成到 DevSecOps 流水線中,以便在整個開發生命周期中主動跟蹤和執行安全标準。 選擇Perforce工具,确保軟件安全性和項目成功

  用于C、C 、C#、Java、JavaScript、Python和Kotlin的SAST工具Klocwork可以識别安全、質量和可靠性問題。這有助于強制遵守編碼标準,确保代碼免受安全漏洞的影響。Klocwork的設計易于擴展到任何規模的項目,它為你提供了在編寫代碼時自動進行源代碼分析的能力。

  此外,Klocwork的差異分析使您能夠僅對已更改的文件進行快速的增量分析,同時提供相當于完整項目掃描的結果。這會幫助您縮短分析時間。

  通過使用Klocwork,您還能收獲:

  在開發早期發現代碼漏洞、合規性問題和規則沖突。這有助于加快代碼審查和手動測試工作;執行行業和編碼标準,包括CWE、CERT、OWASP和DISA STIG;随時報告不同産品版本的合規性。 作者簡介

  代碼安全編程規範(代碼質量與安全)(3)

  斯圖爾特·福斯特(Stuart Foster),Klocwork和Helix QAC産品經理,Perforce

  斯圖爾特·福斯特在移動和軟件開發方面擁有超過10年的豐富經驗,負責管理消費應用和企業軟件的産品開發。目前,他負責管理Klocwork和Helix QAC——Perforce的代碼質量管理解決方案。他緻力于開發符合客戶業務需求的産品、特性和功能,并幫助開發人員生成安全、可靠、無缺陷的代碼。斯圖爾特擁有Carleton大學的信息技術、交互式多媒體和設計學士學位,以及Algonquin應用藝術與技術學院的多媒體設計高級文憑。

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved