原文地址:安全的軟體開發生命週期
部落格地址:blog.720ui.com/
需求
安全需求分析
風險評估要基於系統中的資訊的價值、業務功能的價值、系統的潛在威脅、惡意攻擊的可能性、系統的故障和被成功攻擊的後果等情況進行評估。
關鍵目標識別
我們需要從安全形度進行系統的考慮,它是一個安全的軟體開發生命週期過程中的一部分。
閱讀:
設計
威脅模型
威脅建模是一個工程技術,可以幫助我們識別到系統中存在的相關威脅和漏洞,並幫助我們確定安全目標和確定相關的對策進行防範。
後面有時間,我會針對威脅建模進行大致的講解。
開發
靜態程式碼分析
靜態程式碼分析的好處在於,測試可以完全自動化,使開發人員能夠實現安全的編碼實踐,並在系統釋出前,檢查並修復存在風險的安全問題。
靜態程式碼分析工具可以幫助開發人員快速查詢和防止 SQL 注入、跨站指令碼(XSS),跨站請求偽造(CSRF)和其他惡意攻擊。
例如,Sonar (SonarQube)就是一個很好的工具。Sonar 是一個用於程式碼質量管理平臺,管理原始碼的質量。Sonar 不只是一個質量資料包告工具,更是程式碼質量管理平臺。支援的語言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。
開發安全規範
網路安全
我們經常遇到 Web 攻擊 和網路安全性問題。
閱讀:
資料傳輸安全
當機密或敏感的資料在使用者與 Web 伺服器之間傳遞,可能存在資料的安全性問題。
閱讀:
資料庫安全
使用最小許可權原則來訪問資料庫物件,例如表、檢視、儲存過程等。我舉個實際的場景,如果我需要只讀訪問一個特定的資料庫表,因此,資料庫許可權應該相應設定,而不是將我授予超級管理員許可權。
此外,還需要注意資料庫中機密或敏感資料的安全性,必要時候可以使用加密技術進行儲存,例如針對密碼採取MD5基礎上的鹽值加密。
程式碼審查
程式碼審查是計算機原始碼的檢查。它的目的是發現在最初的開發階段忽略的錯誤,提高軟體的整體質量。程式碼審查可以通過交叉程式設計,非正式的溝通,和正式檢查。
閱讀:
測試
安全測試
安全測試是在相同測試環境和預生產環境進行全面測試,儘可能模擬相應的生產環境。這包括硬體,軟體,系統配置,控制和任何其他硬體。
在測試過程中,包括迴歸測試,必須證明所有的安全控制已經適當應用,正確實現,並且工作正常,消滅所預期的威脅和漏洞。
測試過程中還必須包括漏洞測試,並把該系統投入使用之前表現出嚴重漏洞的修復。
部署
安全評估
安全評估是每一家公司軟體開發生命週期的重要組成部分。專家組對系統進行安全評估,分析安全問題,提供評估報告。
這個部分我們經常忽略,之前我參與的一個產品對安全性要求很高,還進行了多輪安全評估。
總結
我們來回顧下,上面講到的內容。
- 需求階段,我們重點要進行安全需求分析和關鍵目標識別。
- 設計階段,我們可以採取威脅建模的方式,幫助我們確定安全目標和確定相關的對策進行防範。
- 開發階段,我們採取靜態程式碼分析、開發安全規範的方式,在系統釋出前,檢查並修復存在風險的安全問題。
- 測試階段,不僅要進行功能測試、效能測試,還要考慮安全測試,消滅所預期的威脅和漏洞。
- 部署階段,還需要安全評估。
(完)
更多精彩文章,盡在「服務端思維」微信公眾號!