- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 519字
- 2020-10-30 17:56:34
1.2.2 安全缺陷
軟件工程很早就關注軟件瑕疵(software defect)的消除問題。軟件瑕疵是人類思維錯誤(包括疏忽)被編碼到軟件中的結果。功能缺陷可能在軟件研發周期中的任何時刻產生。例如,一個已部署的產品中的瑕疵可能源于訛傳的需求或對需求的誤解。
安全缺陷(security flaw)
指會導致潛在安全風險的軟件瑕疵。
并非所有軟件瑕疵都有安全風險,只有那些確實有安全風險的軟件瑕疵才稱為安全缺陷。如果我們認同安全缺陷就是軟件瑕疵的說法,那我們也必須認同只要消除軟件中的所有瑕疵,就可以消除所有安全缺陷。這個前提是軟件工程和安全程序設計之間關系的基礎。伴隨著軟件質量(可以用每千行代碼中所包含的瑕疵的數量進行度量)的提高,軟件的安全性也隨之提高。因此,很多設計用來消除軟件瑕疵的工具、技術和過程也可以用來消除安全缺陷。
盡管如此,仍然有很多安全缺陷得不到檢測,因為傳統的軟件開發方法很少假定攻擊者的存在。舉個例子,軟件測試通常僅驗證對于合理范圍內的用戶輸入應用程序是否有正確的行為。遺憾的是,攻擊者從來不按常理出牌,他們通常會花費大量的時間尋找能夠危害系統的輸入條件。要想按照漏洞可能導致的風險對安全缺陷進行評估并將其按優先級排序,就必須對現有的工具和方法進行擴展或補充,以假設攻擊者的存在。
推薦閱讀
- 數據庫程序員面試筆試真題與解析
- Mastering Concurrency in Go
- R語言游戲數據分析與挖掘
- Apache Spark Graph Processing
- NativeScript for Angular Mobile Development
- Python機器學習:手把手教你掌握150個精彩案例(微課視頻版)
- Spring Boot進階:原理、實戰與面試題分析
- NetBeans IDE 8 Cookbook
- Building Wireless Sensor Networks Using Arduino
- UML2面向對象分析與設計(第2版)
- 計算機應用基礎項目化教程
- C++程序設計教程(第2版)
- Mastering PowerCLI
- JavaScript Concurrency
- 編程的原則:改善代碼質量的101個方法