安全編碼原則之避免緩存溢出
2018-04-08 20:10:23 | 來源:中培企業IT培訓網
2. 避免緩存溢出
緩沖區溢出是指當計算機向緩沖區內填充數據時超過了緩沖區本身的容量,溢出的數據覆蓋了合法數據。當軟件程序對輸人數據長度檢查不夠,并且允許超過長度的數據存儲到緩沖區中,則會導致緩沖區溢出發生。緩沖區溢出是一種非常普遍、非常危險的漏洞,在各種操作系統、應用軟件中廣泛存在。利用緩沖區溢出攻擊,可以導致程序運行失敗、系統崩潰、系統被惡意控制等后果。
c和C++的語言允許程序員隨意處置指針和數組,并且將對緩沖區(如數組)的邊界檢查工作交給程序員來處理。如果在程序將輸人數據讀人或復制到緩沖區中的時候,安全經驗不足,或者輕易相信輸入數據,程序員不會主動編寫代碼來檢查目標空間是否足夠,就容易產生緩沖區溢出。
同時,C和C++附帶了大量基礎庫,這些庫中存在容易導致緩沖區溢出的危險函數,即基礎庫中的大量函數在拷貝數據的時候也缺乏對目標緩沖區空間的檢查。因此,在軟件程序中,使用這些函數時需要非常慎重。
盡管除了C和C++外的其他高級編程語言加強了對緩沖區溢出的防護,增加了一些保護機制,如主動對緩存邊界進行控制,但是并不能說使用其他語言就不存在緩沖區溢出的危險。一方面由于C語言具有使用廣泛、功能強大且高效靈活等特性,許多其他高級編程語言依賴于使用C語言庫,另一方面有些高級編程語言出于高效運行的考慮,允許程序員關閉該緩存溢出保護特性的機制,因此,不管使用哪種語言,開發人員需要提高安全意識而避免出現緩沖區問題。
標簽:
避免緩存溢出