- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 519字
- 2020-10-30 17:56:34
1.2.2 安全缺陷
軟件工程很早就關注軟件瑕疵(software defect)的消除問題。軟件瑕疵是人類思維錯誤(包括疏忽)被編碼到軟件中的結果。功能缺陷可能在軟件研發周期中的任何時刻產生。例如,一個已部署的產品中的瑕疵可能源于訛傳的需求或對需求的誤解。
安全缺陷(security flaw)
指會導致潛在安全風險的軟件瑕疵。
并非所有軟件瑕疵都有安全風險,只有那些確實有安全風險的軟件瑕疵才稱為安全缺陷。如果我們認同安全缺陷就是軟件瑕疵的說法,那我們也必須認同只要消除軟件中的所有瑕疵,就可以消除所有安全缺陷。這個前提是軟件工程和安全程序設計之間關系的基礎。伴隨著軟件質量(可以用每千行代碼中所包含的瑕疵的數量進行度量)的提高,軟件的安全性也隨之提高。因此,很多設計用來消除軟件瑕疵的工具、技術和過程也可以用來消除安全缺陷。
盡管如此,仍然有很多安全缺陷得不到檢測,因為傳統的軟件開發方法很少假定攻擊者的存在。舉個例子,軟件測試通常僅驗證對于合理范圍內的用戶輸入應用程序是否有正確的行為。遺憾的是,攻擊者從來不按常理出牌,他們通常會花費大量的時間尋找能夠危害系統的輸入條件。要想按照漏洞可能導致的風險對安全缺陷進行評估并將其按優先級排序,就必須對現有的工具和方法進行擴展或補充,以假設攻擊者的存在。
推薦閱讀
- ASP.NET Core:Cloud-ready,Enterprise Web Application Development
- 算法訓練營:入門篇(全彩版)
- FreeSWITCH 1.6 Cookbook
- PHP+MySQL網站開發技術項目式教程(第2版)
- Instant 960 Grid System
- C語言程序設計案例式教程
- SQL基礎教程(視頻教學版)
- Python忍者秘籍
- Clojure Reactive Programming
- C++從入門到精通(第5版)
- Arduino計算機視覺編程
- HTML+CSS+JavaScript編程入門指南(全2冊)
- Swift語言實戰晉級
- Vue.js光速入門及企業項目開發實戰
- C++程序設計教程