安全的軟體開發生命週期

樑桂釗發表於2017-03-15

原文地址:安全的軟體開發生命週期
部落格地址:blog.720ui.com/

安全的軟體開發生命週期

需求

安全需求分析

風險評估要基於系統中的資訊的價值、業務功能的價值、系統的潛在威脅、惡意攻擊的可能性、系統的故障和被成功攻擊的後果等情況進行評估。

關鍵目標識別

我們需要從安全形度進行系統的考慮,它是一個安全的軟體開發生命週期過程中的一部分。

閱讀:

設計

威脅模型

威脅建模是一個工程技術,可以幫助我們識別到系統中存在的相關威脅和漏洞,並幫助我們確定安全目標和確定相關的對策進行防範。

後面有時間,我會針對威脅建模進行大致的講解。

開發

靜態程式碼分析

靜態程式碼分析的好處在於,測試可以完全自動化,使開發人員能夠實現安全的編碼實踐,並在系統釋出前,檢查並修復存在風險的安全問題。

靜態程式碼分析工具可以幫助開發人員快速查詢和防止 SQL 注入、跨站指令碼(XSS),跨站請求偽造(CSRF)和其他惡意攻擊。

例如,Sonar (SonarQube)就是一個很好的工具。Sonar 是一個用於程式碼質量管理平臺,管理原始碼的質量。Sonar 不只是一個質量資料包告工具,更是程式碼質量管理平臺。支援的語言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。

開發安全規範

網路安全

我們經常遇到 Web 攻擊 和網路安全性問題。

閱讀:

資料傳輸安全

當機密或敏感的資料在使用者與 Web 伺服器之間傳遞,可能存在資料的安全性問題。

閱讀:

資料庫安全

使用最小許可權原則來訪問資料庫物件,例如表、檢視、儲存過程等。我舉個實際的場景,如果我需要只讀訪問一個特定的資料庫表,因此,資料庫許可權應該相應設定,而不是將我授予超級管理員許可權。

此外,還需要注意資料庫中機密或敏感資料的安全性,必要時候可以使用加密技術進行儲存,例如針對密碼採取MD5基礎上的鹽值加密。

程式碼審查

程式碼審查是計算機原始碼的檢查。它的目的是發現在最初的開發階段忽略的錯誤,提高軟體的整體質量。程式碼審查可以通過交叉程式設計,非正式的溝通,和正式檢查。

閱讀:

測試

安全測試

安全測試是在相同測試環境和預生產環境進行全面測試,儘可能模擬相應的生產環境。這包括硬體,軟體,系統配置,控制和任何其他硬體。

在測試過程中,包括迴歸測試,必須證明所有的安全控制已經適當應用,正確實現,並且工作正常,消滅所預期的威脅和漏洞。

測試過程中還必須包括漏洞測試,並把該系統投入使用之前表現出嚴重漏洞的修復。

部署

安全評估

安全評估是每一家公司軟體開發生命週期的重要組成部分。專家組對系統進行安全評估,分析安全問題,提供評估報告。

這個部分我們經常忽略,之前我參與的一個產品對安全性要求很高,還進行了多輪安全評估。

總結

我們來回顧下,上面講到的內容。

安全的軟體開發生命週期

  • 需求階段,我們重點要進行安全需求分析和關鍵目標識別。
  • 設計階段,我們可以採取威脅建模的方式,幫助我們確定安全目標和確定相關的對策進行防範。
  • 開發階段,我們採取靜態程式碼分析、開發安全規範的方式,在系統釋出前,檢查並修復存在風險的安全問題。
  • 測試階段,不僅要進行功能測試、效能測試,還要考慮安全測試,消滅所預期的威脅和漏洞。
  • 部署階段,還需要安全評估。

(完)

更多精彩文章,盡在「服務端思維」微信公眾號!

安全的軟體開發生命週期

相關文章