在任何新的軟件開發(fā)項目開始時都應(yīng)考慮軟件安全性。開始一項工作可能會讓人望而卻步,因為需要做出許多決定,并且必須仔細考慮。這通常包括定義項目需求、選擇正確的流程、選擇正確工具和確保軟件安全。
出于這個原因,我們組織了一個循序漸進的指南,幫助您完成新項目中最耗時和最困難的挑戰(zhàn),以確保您的項目取得成功。
安全軟件開發(fā)最佳實踐
安全的軟件開發(fā)最佳實踐可以簡單地分為四個主要部分:
1. 了解您的項目要求
2. 定義軟件開發(fā)流程
3. 為項目選擇合適的工具
4. 設(shè)置DevSecOps
SAST 工具(如Klocwork)可以幫助您滿足每個部分的建議指南。
了解您的項目要求
在項目開始時,您需要考慮幾個因素 。通過查看這些內(nèi)容,它將幫助您更好地了解您的項目要求。
概述項目
花時間了解項目本身,并提出有助于指導(dǎo)整個開發(fā)生命周期決策的問題。像這樣的問題:
?正在開發(fā)什么類型的項目?(嵌入式、云服務(wù)、前端/后端軟件等)
?這個項目面向哪個行業(yè)?( 汽車 、 航空航天 、企業(yè)、 醫(yī)療 、 金融 等)
?軟件將如何使用以及在什么設(shè)置下使用?(企業(yè)、中小企業(yè)、B2B、B2C等)
定義項目愿景
對應(yīng)用程序?qū)⑻峁┑膬?nèi)容有一個愿景,有助于為工作樹立一顆指路明燈。通過制定客戶問題、痛點以及應(yīng)用程序?qū)⑷绾谓鉀Q這些問題的明確規(guī)范,將有助于確保您提供正確的解決方案。
確定合規(guī)性要求
確定作為項目行業(yè)、供應(yīng)鏈、業(yè)務(wù)或客戶要求的一部分是否存在代碼合規(guī)性要求。
此外,您還需要確定需要什么級別的信息安全、功能安全和質(zhì)量合規(guī)。這可能包括編碼標準,例如:
? CWE
? CERT
? CVE
? OWASP
? DISA-STIG
? MISRA
? AUTOSAR
從項目一開始就選擇并遵循一個標準將減少將來的合規(guī)性難題。
選擇靈活的編程語言
確保您的編程語言(無論是 C、C++、C#、Java或JavaScript)-最適合您的項目。選擇最合適的編碼語言可為您帶來以下好處:
?易于開發(fā)
?代碼的可維護性
?接觸熟練的開發(fā)人員
?明確的編碼標準和最佳實踐
您選擇的語言可以決定您的軟件是否保持價值和活力。
開發(fā)代碼設(shè)計
花時間制定設(shè)計規(guī)范。通過這樣做,您能夠驗證系統(tǒng)邏輯,確定所有組件是否將一起正確執(zhí)行,并幫助確保軟件安全。這可能意味著成功發(fā)布和代價高昂的重新設(shè)計之間的區(qū)別。
建立代碼架構(gòu)
規(guī)劃您的代碼庫以確保其井井有條。請務(wù)必考慮以下事項:
?文件命名約定
?為項目定義模塊
?層次和結(jié)構(gòu)
通過提前完成這項工作,您可以為開發(fā)人員提供一個清晰的模板去遵循,以便將來更輕松地進行維護。
定義您的軟件開發(fā)流程
雖然您的開發(fā)過程對于您的項目需求和要求是獨一無二的,但我們建議您考慮以下幾點:
確定需要實施哪些軟件安全最佳實踐
根據(jù)行業(yè)的不同,您的開發(fā)項目可能需要遵循特定的最佳實踐和標準。此時,您應(yīng)該使項目要求與開發(fā)過程保持一致。這可能包括遵循功能安全標準 (如 IEC 61508 )和遵循安全編碼實踐(如CERT或CWE)。
靜態(tài)分析器 (如 Klocwork )可以幫助執(zhí)行項目可能需要的任何標準、最佳實踐和條件。
與開發(fā)方法保持一致
無論您的開發(fā)過程是Agile/Waterfall, Scrum/Kanban還是您當(dāng)前可能擁有的任何其他過程,都無關(guān)緊要。重要的是,您需要在適合您的業(yè)務(wù)、開發(fā)人員和開發(fā)團隊打算交付項目的方式的開發(fā)流程上保持一致。
在方法上保持一致的目的是擁有一個確保組織和溝通以及幫助防止開發(fā)過程中出現(xiàn)問題的過程。
組織您的環(huán)境設(shè)置
一般來說,確定并創(chuàng)建項目所需的環(huán)境以確保整個團隊使用相同的設(shè)置非常重要。最佳做法是,應(yīng)為以下對象設(shè)置單獨的環(huán)境:開發(fā)、用戶驗收測試 (UAT)、階段化和生產(chǎn)。
使用存儲庫工具
使用版本控制工具(如 Helix Core )建立源代碼存儲庫。這使您的開發(fā)團隊能夠:
?花更少的時間處理工具和流程。
?停止在手動工作流程上浪費時間,使他們能夠重新開始編碼。
?高效處理數(shù)以萬計的文件以及數(shù)PB級的數(shù)據(jù)。
?將代碼中的更改內(nèi)容與更改原因聯(lián)系起來。
除了代碼存儲庫之外,還應(yīng)考慮使用其他工具或流程來存儲和跟蹤其他與項目相關(guān)的內(nèi)容。這包括:
?將項目使用的工具和組件保留在整個團隊可以輕松使用的地方。
?為計劃、文檔和開發(fā)人員入職提供中心位置。
?在項目管理軟件(如Helix ALM)或問題跟蹤軟件中定義工作任務(wù)。
通過建立這些存儲庫,您可以幫助確保您的開發(fā)高效、內(nèi)容安全,并且知識易于快速上手新開發(fā)人員。
通過安全編碼實踐強制實施軟件安全性
通過遵循安全編碼實踐,將安全實施構(gòu)建到開發(fā)過程中,并使用安全編碼工具幫助強制實施合規(guī)性。此外,為您的團隊提供安全培訓(xùn)和學(xué)習(xí)材料,以幫助發(fā)展安全文化。 SAST 工具(如Klocwork)可以幫助解決這些問題。
將檢查合并到開發(fā)管道中
在整個開發(fā)管道中實施安全檢查有助于強制實施良好的編碼實踐。在開發(fā)代碼時,請務(wù)必注意安全,建議您在開發(fā)人員的 IDE、CI/CD管道 中以及在持續(xù)集成構(gòu)建期間使用SAST掃描。
出于測試和重構(gòu)目的,請確保開發(fā)人員正在編寫單元測試,并且質(zhì)量保證正在編寫功能測試。通常,請考慮所有可能的測試策略,并確保盡可能創(chuàng)建并自動化安全性和其他測試。
為您的項目任務(wù)和功能定義“完成”
即使任務(wù)或功能看起來已完成并在開發(fā)人員的桌面上編譯,但事實并非如此。你需要有一個明確的流程來定義工作——從頭到尾。
最佳做法包括:
?需求捕獲
?工作范圍
?定義驗收標準
?為代碼開發(fā)單元和功能測試用例
?進行 同行代碼評審
?集成測試、安全測試以及從所有階段到最終環(huán)境測試的自動化
鼓勵反饋和溝通
團隊和開發(fā)人員之間的反饋和溝通對于項目的成功至關(guān)重要。
重要的是,您的開發(fā)人員能夠從代碼提交中獲得快速反饋,以便他們能夠及早解決編碼問題,并為項目干系人提供有關(guān)項目進度、指標和潛在風(fēng)險的見解。
在自動化之外,為開發(fā)人員提供足夠的時間進行代碼審查、規(guī)劃和回顧非常重要。這些都將有助于確保在消除通信障礙時保持高開發(fā)速度。
為您的項目選擇合適的工具
項目的一個重要部分是選擇正確的工具。工具選擇很重要,因為它有助于標準化您的項目,并使團隊中的每個人都能“說同一種語言”。這為以下方面提供了整個團隊的好處:
?生產(chǎn)力
?公共知識
?測試和調(diào)試
?入職
為了幫助確保為團隊選擇最有效的工具集,請考慮以下準則:
?研究和查看所有工具選項,并根據(jù)項目和團隊要求對其進行評估。
?了解工具選擇的成熟度以及可用的支持類型,例如技術(shù)支持、幫助資源和主動維護。
?考慮工具、團隊的經(jīng)驗水平以及招聘新開發(fā)人員的能力將受到怎樣的影響。
?檢查工具集之間的兼容性。
無論您選擇哪種工具集,我們都建議它包括以下內(nèi)容:
?代碼存儲庫和版本控制 ,用于跟蹤和管理對源代碼、數(shù)字資產(chǎn)和大型二進制文件的更改。
?靜態(tài)代碼分析器和SAST工具,用于強制實施安全編碼實踐,并識別缺陷、漏洞和合規(guī)性問題。
?應(yīng)用程序生命周期管理工具在項目的整個 應(yīng)用程序生命周期 管理中提供端到端的可追溯性。
為您的軟件開發(fā)項目設(shè)置 DevSecOps
將 DevOps 的速度和規(guī)模 與安全編碼實踐相結(jié)合 ,DevSecOps是必不可少的軟件安全最佳實踐。通過遵循DevSecOps方法,您可以:
?盡可能多地自動化流程—安全性、配置、管理、測試等。這將為開發(fā)人員騰出時間專注于新的代碼和功能。
?定義成功/失敗指標,并主動監(jiān)控和報告項目結(jié)果。這有助于您更快地發(fā)現(xiàn)問題和漏洞,做出更明智的決策,并在整個應(yīng)用程序中強制實施項目要求。
?采取措施保護您的基礎(chǔ)架構(gòu)。安全性不僅對您的最終產(chǎn)品很重要,而且對您公司的程序和政策也很重要。確保您從整體上考慮安全性,并從上到下促進安全文化。
?持續(xù)監(jiān)控和實施軟件安全合規(guī)性。將安全工具(如SAST、DAST和SCA)集成到DevSecOps管道中,以便在整個開發(fā)生命周期中主動跟蹤和實施安全性。
選擇Perforce工具以確保項目成功
Klocwork SAST for C,C++,C#,Java,JavaScript,Python,and Kotlin 可識別安全性、質(zhì)量和可靠性問題。這有助于強制遵守編碼標準,以確保您的代碼免受安全漏洞的影響。Klocwork旨在輕松擴展到任何規(guī)模的項目,使您能夠在編寫代碼時自動進行源代碼分析。
此外,Klocwork的差異分析使您能夠僅對已更改的文件執(zhí)行快速增量分析 ,同時提供與完整項目掃描結(jié)果相同的結(jié)果。這確保了盡可能短的分析時間。
通過使用Klocwork,您還將獲得以下好處:
?在開發(fā)早期檢測代碼漏洞、合規(guī)性問題和規(guī)則沖突。這有助于加快代碼審查和手動測試工作。
?執(zhí)行行業(yè)和編碼標準,包括CWE、CERT、OWASP和DISA STIG。
?報告一段時間內(nèi)和跨產(chǎn)品版本的合規(guī)性。
了解 Klocwork 如何幫助確保您的下一個項目取得成功。注冊免費試用版。
-
代碼
+關(guān)注
關(guān)注
30文章
4814瀏覽量
68849
發(fā)布評論請先 登錄
相關(guān)推薦
評論