DAY36 安全軟體開發生命週期
不能等到漏洞出現後才去修,應該要在軟體開發的過程中,就把安全一起做進去
一. SDLC 軟體開發生命週期
Software Development Life Cycle,SDLC
軟體開發生命週期
就是從軟體的開發規劃,一路到正式使用的過程
開發的生命週期
- 需求
- 設計
- 實作
- 測試
- 部署
- 維運
-
需求階段 Requirements
- 不能只有功能需求,例如:使用者可以登入
- 也要加入安全需求,例如:
- 登入需身分驗證、限制錯誤次數等等
-
不能等程式寫完才想
-
設計階段 Design
- 在系統設計階段進行威脅建模,分析要保護的資產、可能的攻擊方式、弱點,再設計對應的防護措施
- 系統還沒被攻擊前,先思考可能從哪裡被攻擊
- 以上面的登入系統來舉例,可能就要思考:
- 暴力破解、權限繞過等等
- 要提前設計好防禦
-
實作階段 Implementation
- 在程式設計階段要思考
- 使用安全的API與函式
- 還有威脅有沒有抵擋好,例如:
- SQL注入->預備陳述式
- 緩衝區溢位->邊界檢查
-
測試階段 Verification
- 不能只看功能有沒有用
- 還要測這個功能安不安全,例如:
- 模糊測試 Fuzz Testing
- 故意輸入:錯誤格式、異常資料、超長資料、奇怪字元等等
- 看程式會不會出現異常或當機
-
部署階段 Release
- 系統上線前要做:
- 最終安全檢查 Final Security Review
- 確認安全需求、測試結果、未修正問題,判斷是否符合發行條件
- 事件回應計畫 Incident Response Plan
- 事先安排事故發生時的通報、分工、控制損害、復原方式
IPAS 115-1 第二科 Q28
在軟體開發生命週期(SDLC)中,何時開始考慮安全性(Security)的處理成本最高?
D :系統維運階段
拖到最後才補安全最貴,對應最晚的維運階段