安全編碼原則之避免緩存溢出中的避免緩沖區溢出
2018-04-08 20:11:17 | 來源:中培企業IT培訓網
對于避免緩沖區溢出,可以使用很多安全防御措施,包括:
1)精心編程避免緩沖區溢出。編寫程序時,應當嚴格檢查緩沖區長度,避免出現將過長的數據復制到長度較小的緩沖區空間,程序員一方面要預估并控制輸入數據的長度,并且根據需要動態地申請/分配內存以便靈活處理具有不定長度的輸人數據,甚至在處理更長輸人數據時采用分段復制、分段處理的程序流程。
2)使用替代的安全函數或函數庫。不使用C或C++語言中那些存在緩沖區溢出問題的函數,而改用一些更安全的函數,如使用sU'ncpy()代替strcpy();此外,可以使用一些知名的底層庫來代替使用C/C÷+語言提供的基礎庫,如采用Libmih、libsafe等,這些庫提供了一 些更為安全的基礎函數。
3)基于探測方法防御,使用更新、更具安全性的編譯環境,打開一些具有安全防御機制的選項。有些高級編程環境會在復制用戶數據之前主動探測目標空間,將一個“探測” 值插入到返回地址的前面,以保證不會出現緩沖區溢出,如1m一u LlIllX提供的StackGuarc'l、 OpenBSD提供的ProPolice、Microsoft提供的/GS選項等。
4)非執行的堆棧防御。這種方法要求不允許執行堆棧上的代碼,從而防止攻擊者利用緩沖區溢出后執行堆棧上的代碼。這包括為OpenWall所使用non-exec補丁和為Red Hat/ Feclora所使用exec shield。
標簽:
安全防御措施
- 上一篇:安全編碼原則之避免緩存溢出
- 下一篇:安全編碼原則之程序內部安全