敏捷開發過程中易產生安全問題的6個習慣
敏捷開發旨在幫助團隊比其他軟體開發方法更快、問題更少地向客戶進行交付。敏捷使團隊能夠靈活地響應市場中的變化或響應客戶向開發團隊提供的反饋。但在沒有考慮充分的情況下采用這種速度和靈活性時,可能帶來潛在的安全問題。由於常規開發操作(DevOps)的安全性不足,DevSeOps作為一種確保將安全性整合到軟體開發生命週期中的方法越來越受歡迎,DevSeOps在軟體開發的每個階段整合安全測試。
什麼是典型的敏捷過程?
典型的敏捷開發主要有五個步驟:
會議和計劃:在這個階段,團隊一起了解他們準備開發的軟體需求,想要建立的功能,併為他們將要做的工作進行整體規劃。
設計:團隊對他們將要構建的軟體進行實際設計。他們採用在第一階段討論過的最終想法,並找出技術實現。通常涉及到建立架構圖、資料庫設計和建立軟體所需的其他技術文件。
程式碼和測試:在這個階段,團隊構建軟體並對其進行測試來確保其正常工作。在這個階段,軟體不僅要測試功能,還要測試安全問題。
釋出:在此階段,軟體將釋出給其客戶以供使用。這可以是全新軟體產品的釋出,也可以只是現有產品的新版本。
反饋:在此階段,開發團隊從使用應用程式的群體那裡接收反饋,並使用該資訊來計劃未來的軟體開發活動。
為什麼存在敏捷過程不能正確地整合安全編碼實踐
首先,缺乏徹底的安全審查。快速的迭代通常會導致開發團隊忽視或匆忙地對程式碼進行安全審查。如果沒有高質量的安全審查,安全問題進入生產的可能性就會增加。
其次,更關注於新功能。敏捷過程是一個連續的迴圈,但這些迴圈通常側重於新增新功能,而不是維護舊功能。開發團隊更多關注於新功能是否滿足客戶需求,而舊功能中存在的安全漏洞可能在很長一段時間內都沒有被發現或解決。
第三,沒有專門的安全測試點。開發人員被要求在評審和測試後釋出程式碼,但也需要專業安全人員進行測試。敏捷可以為開發團隊提供一個快速、靈活的過程,從而加快開發迭代步伐,但也需要確保能夠正確地將安全性整合到開發生命週期中。
產生安全問題的6個習慣
快速釋放週期
敏捷開發的主要特徵之一是其快速釋出週期。雖然這有利於滿足客戶需求,但這種快速的過程可能會導致忽略潛在的安全問題。
安全意識和培訓不足
實現良好安全流程的挑戰之一是人的因素。當涉及到安全性時,程式碼的質量將受到開發人員知識的影響,可能在無意中將安全漏洞引入程式碼中。
對原始碼儲存庫的訪問控制不足
有些開發環境對其程式碼庫沒有適當的訪問控制,這可能導致程式碼中出現未經授權的更改。這些變更不會像經過適當變更管理流程的程式碼變更那樣受到相同級別的審查或測試,可能導致引入安全漏洞。
缺乏安全整合
在某些情況下,軟體開發環境沒有適當的安全整合來幫助控制對開發環境的訪問。這包括MFA和SSO等。這對於確保只有經過授權的人員才能訪問公司程式碼儲存庫並參與其中非常重要。
缺乏敏感資料管理系統
敏感資料管理系統是對裝置上的敏感資料進行保護的系統。一個在軟體開發中很重要的例子是SAST或DAST解決方案。這些工具可以自動測試軟體程式碼的漏洞和可導致資料洩露的安全問題,對於確保敏感資料不會意外洩露到生產程式碼中非常重要。
缺乏第三方和開源管理
無論何時使用外部程式碼,重要的是要有一個安全評估過程,來確保沒有潛在的安全漏洞。透過使用依賴項審計工具可以評估應用程式中使用的程式碼。另一層保護可以是使用子資源完整性驗證,在將開源元件引入程式碼儲存庫之前檢查正在使用的開源元件是否未被篡改。
如何將安全流程整合到敏捷開發框架中
安全程式碼培訓
安全程式碼培訓可以在一定程度上減少開發人員無意中引入的安全漏洞。透過教授開發人員安全編碼實踐,提高自我評估程式碼安全能力,避免犯可能引入新漏洞的錯誤。
專用安全程式碼審查
作為敏捷測試階段的一部分,設定專門的安全程式碼審查。此過程對應用程式原始碼的檢查,目的是尋找潛在的安全問題。理想情況下,這應該由安全人員而不是編寫程式碼的開發人員來完成。
頻繁的滲透測試
另一個識別安全問題的良好實踐是定期執行滲透測試。透過安全人員對應用程式執行網路攻擊,來檢視實際執行中可被利用的漏洞,可以定期獲得安全報告並瞭解到需要採取哪些步驟來解決這些問題。
第三方風險管理
當前開發中離不開第三方元件的使用,如開原始碼庫,第三方託管服務等,透過對第三方進行風險評估,來避免將新的安全漏洞或其他形式的風險引入軟體當中。
參讀連結:
https://www.softwaresecured.com/7-agile-software-development-habits-that-produce-security-concerns/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2987634/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Web開發中的6個壞習慣Web
- 敏捷轉型過程中避不開的4個問題敏捷
- itm6 tep訪問過程中產生很多heapdump和javacore檔案問題Java
- 皮膚開發過程中遇到的3個問題
- 敏捷開發過程敏捷
- 關於centos 7安裝binwalk的過程中產生的問題CentOS
- android開發過程中遇到的問題Android
- 產品經理必讀:敏捷開發中的需求管理過程全解敏捷
- 開發過程中mysql常見問題MySql
- dsp builder 11.0 使用過程中產生的問題及解決方案UI
- Flutter開發過程中遇到的問題記錄Flutter
- 記錄開發過程一個路由問題路由
- 學習vue過程中遇到的問題Vue
- 教育類app開發過程中,需要避免的問題APP
- 開發過程中遇到問題該怎麼辦?
- 一個簡易的proxy程式的開發過程(2)(轉)
- 軟體開發中需要克服的8個壞習慣
- 【DATAGUARD 學習】學習DATAGUARD 過程中遇到的問題
- Vue 實踐過程中的幾個問題Vue
- munium學習過程中問題解決
- 敏捷開發的6個實戰經驗敏捷
- 直播賣貨APP開發過程中的最佳化問題APP
- 高效程式設計師的45個習慣-敏捷開發修煉之道(讀後感)程式設計師敏捷
- [分享]《高效程式設計師的45個習慣:敏捷開發修煉之道》筆記程式設計師敏捷筆記
- 敏捷開發過程剖析及工具推薦敏捷
- 工業產品開發過程中的PDM技術
- 教學軟體開發過程中存在哪些問題?
- 從程式設計中學到的 6 個生活習慣程式設計
- 敏捷擁護者眼中敏捷開發的常見問題敏捷
- 《高效程式設計師的45個習慣:敏捷開發修煉之道》-個人讀後感程式設計師敏捷
- 記錄在使用Django開發過程中遇到的問題No.2Django
- 一個Flutter中臺元件的開發過程Flutter元件
- 大資料開發過程中的5個學習通用步驟大資料
- 需要避免的6個雲原生開發問題
- 軟體開發中關注習慣的力量
- 產品專案的九個敏捷開發經驗敏捷
- 直播APP開發中個人資訊及財產安全問題不可忽視APP
- Vue專案開發過程中遇到的一些問題總結Vue