天天看點

應用軟體安全開發的基本流程​

應用軟體存在大量的漏洞是目前資訊安全領域面臨的極大困境,雲應用軟體也同樣如此。如何有效減少應用軟體内的漏洞,提高應用軟體安全是目前應用軟體開發中亟待解決的問題,尤其在雲計算中,應用軟體安全尤為重要。在進行應用軟體開發時,應充分參考安全軟體開發生命周期相關模型,如下圖1所示,強化應用軟體在開發、部署和運作的各個階段中的安全,建立規範化的安全開發流程。​

應用軟體安全開發的基本流程​

圖1應用軟體安全開發流程​

(1)需求階段​

首先應對應用軟體在開發過程中面臨的風險進行評估,分析可能面臨的威脅、存在的脆弱性及其可能造成的影響,并對上述三者進行量化評估;然後識别應用軟體開發過程中的關鍵對象,并對關鍵對象進行安全防護;最後結合雲應用的業務場景分析應用軟體的安全需求,包括應用軟體資料的機密性、完整性與可用性,應用軟體與開發環境互動所必需的輸入、輸出資訊的安全屬性,以及應用軟體的彈性、可控性和業務連續性。​

(2)設計階段​

首先需要對雲應用進行受攻擊面分析,枚舉所有通路入庫、接口、協定以及一切可執行代碼的過程,減少攻擊者利用潛在弱點或漏洞的機會,使攻擊面最小化;然後基于對受攻擊面的分析,對應用軟體面臨的威脅建立模型,通過模型化的方式來管理威脅、風險和對應的緩解措施;最後形成安全設計方案,安全設計方案包括用戶端安全設計、伺服器安全設計和伺服器安全配置基線三部分,設計方案應滿足安全需求、定義安全漏洞的嚴重性門檻值、确定風險的最低可接受級别。​

(3)開發階段​

雲服務提供商首先需要提供主流程式設計語言的安全編碼規範,包含代碼書寫規範、資料庫标準接口、輸入輸出驗證等,通過安全編碼規範可以有效減少緩沖區溢出、跨站點腳本、SQL注入等代碼漏洞;然後開發團隊需要分析應用軟體開發項目使用的所有函數和API,并禁用确定為不安全的函數和API,建構安全函數庫;最後開發團隊應進行代碼分析,通過人工代碼評析或靜态代碼分析工具對代碼的品質進行檢查,減少代碼中的文法錯誤和安全漏洞等問題。除此之外,還需要對源代碼進行版本管理,保證應用軟體版本的正确性。​

(4)測試階段​

在完成開發後,雲服務提供商需要基于威脅模組化進行測試設計,首先對應用軟體進行Fuzzing測試,以應用軟體的預期用途及功能為基礎,故意向應用軟體輸入不良格式或随機資料來誘發程式故障,檢測應用軟體的安全性;然後進行滲透測試,由專業人員模拟黑客對應用軟體進行攻擊,通過滲透測試發現由于編碼錯誤、系統配置錯誤或其他運作部署弱點導緻的潛在漏洞。除此之外,還可通過安全衆測平台,如阿裡雲的先知平台、Sobug的白帽衆測平台等對應用軟體開展安全測試。​

(5)釋出階段​

在應用軟體釋出階段,雲服務提供商首先需要在類似的生産環境下,對應用軟體進行內建測試,確定能夠安全運作;然後由安全專家進行最終安全評審,通過安全評審,則可釋出;最後,雲服務提供商需要制訂應用軟體安全響應和預警計劃,包括指定運維團隊、制訂代碼安全維護計劃、制定安全預警方案等。​

随着雲計算技術和平台的出現和普及,應用軟體開發者不必進行任何底層系統工作,軟體開發的周期越來越短,為了確定短周期内應用軟體的安全開發和運維,出現了DevOps概念。DevOps的核心思想是将開發和運維一體化,縮短應用軟體開發的周期,提高應用軟體傳遞的品質和頻率。目前,DevOps 思想在應用軟體的開發和部署中被廣泛使用,已經成為軟體行業的标準配置。​

繼續閱讀