防禦性編程

防禦性編程是防禦式設計的一種形式,用來確保軟件在未知的環境中能繼續運行。防禦性編程的實踐往往用於需要高可用性、安全性、保密性的地方。—— 維基百科

Essential security skills for Java developers:

  • Input handling
  • Authentication and session management
  • Access control
  • Error and exception handling
  • Encryption services
    防禦性編程的幾條基本規則:
  1. 保護你的代碼不要受“外界”的無效數據影響,“外界”影響有很多種情況。外部系統的數據,某個用戶的操作或模型/組件外面的數據。任何在控制範圍之外的東西都是危險的,而任何在控制範圍之內的都是安全的,所以要設立“安全區”。在安全區域的代碼會驗證所有的輸入數據:檢查所有輸入參數的類型,長度和取值範圍。可以通過雙擊來檢測有沒有溢出。
  2. 當檢驗到了錯誤的數據後,可以考慮如何處理它。防禦性編程並不意味着要忍受錯誤或是避開錯誤。它意味着要從健壯性(如果遇到你能處理的問題時能保持程序運行)和正確性(不會返回錯誤的結果)之間權衡最合適的處理方式。可以選擇一種策略來處理錯誤的數據:報錯並立刻停止程序(快速結束),返回一個替代的數據值,等等,總之要確保這個策略是明顯一致的。
  3. 不要以爲在代碼外進行函數調用和方法調用會像你所想的那般順利。你要明白這一點,並在外部的API和庫裏測試你的錯誤處理。
  4. 在開發和測試的情況下,可以使用斷言來假設某種“可能出現”的條件並特別顯示出來。這對於需要不同的人在各個時間進行維護的高可靠性大型系統來說尤其重要。
  5. 添加診斷代碼可以智能記錄並追蹤代碼,它可以解釋運行時當前的情況,尤其在遇到某個問題時它的幫助會更大。
  6. 錯誤處理需要標準化。要考慮遇到“一般錯誤”、“預料中錯誤”和警告時的各種處理方式,決定好之後就不要再改了。
  7. 只有在你需要的時候,並且你對編程語言的異常處理極爲熟悉纔可以使用異常處理。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章