測試與部署
在部署建置之前需要進行周全的測試。除了昨天已提及的源碼掃描外,還有考慮以下的測試活動:
-
弱點掃描:這可以幫助確定是否有已知的安全漏洞存在於系統中。
-
壓力測試:通過模擬大量的使用者同時存取,以評估系統的性能及其在高壓情境下的反應。
-
整合測試:確保所有模組和子系統能夠無縫整合,且能夠正常運作。
由於系統規模、服務對象不同,可以依需求進行測試,在實際部署前,必須留出適當的時間來進行修改和確認。
事實上,如果開發過程中就已經持續關注這些安全性和功能上的問題,那麼在測試階段遇到的問題將會大幅減少。例如,很多在源碼掃描中發現的細節問題,如果早期就處理,則不太可能在後續的弱點掃描中再次出現。
提前測試,會讓事後修補更加輕鬆。
測試完成後不急著上線,還有部署環境的設定
部署階段涉及的不是把產品直接上線而已它還需要考慮安全的配置,環境因素在先前的階段尚未被關注到
1. 環境配置:
-
Config檔管理:避免在配置文件中暴露敏感資訊,如密碼或API密鑰。使用加密或環境變數來儲存這些資料。
-
HTTPS設定:確保所有的通信都是加密的,這不僅保護數據的隱私,也確保數據在傳輸中不被篡改。
-
源碼管理和版本控制:使用像Git這樣的工具來追踪和管理代碼的變更,並確保正式環境中不直接存放源碼。
-
備份管理:定期地、自動化地備份所有重要數據和配置,並定期測試備份的還原功能。
2. 安全配置:
-
端口和method限制:關閉不必要的端口和HTTP method(如PUT, HEAD, DELETE...等),降低系統受攻擊的機會。
-
目錄列表:禁止目錄列表功能,以防止攻擊者看到伺服器上的文件結構。
-
錯誤訊息管理:自訂錯誤頁面,避免洩露系統的敏感資訊。
-
XXE防護:禁用或限制XML的處理(disable DTD),以預防XXE攻擊。
-
主機更新和時間同步:確保主機是最新的,且系統的時間與世界標準時間同步,這有助於日誌管理和事件跟踪。
3. 縱深防禦:
-
多層防火牆策略:在DB層、AP層都設定防火牆,讓每一層都提供保護。
-
外部防護工具:使用WAF和IPS等工具,增強對外部威脅的防護能力。
建立一個堅固的部署環境並不是一件簡單的事情,它涉及到複雜的技術和策略的選擇。但只要每一層的防禦都設置得當,大多數的攻擊都可以被成功阻擋。