- C和C++安全編碼(原書(shū)第2版)
- (美)Robert C.Seacord
- 346字
- 2020-10-30 17:56:47
2.6.12 未來(lái)發(fā)展方向
未來(lái)的緩沖區(qū)溢出預(yù)防機(jī)制將超過(guò)惠普aCC、英特爾ICC和GCC編譯器的現(xiàn)有能力,提供完整的覆蓋,它通過(guò)把更深入的編譯時(shí)檢查和運(yùn)行時(shí)檢查相結(jié)合,并盡量減少所需的開(kāi)銷來(lái)實(shí)現(xiàn)這一目標(biāo)。這樣的機(jī)制之一是有安全保證的C/C++(Safe-Secure C/C++,SSCC)。
SSCC推斷函數(shù)的要求和保證,并利用它們來(lái)發(fā)現(xiàn)是否滿足所有要求。例如,在下面的函數(shù)中,n必須是一個(gè)s指針?biāo)赶虻臄?shù)組的合適大小。此外,返回的字符串保證以空字符結(jié)尾。
1 char *substring_before(char *s, size_t n, char c) { 2 for (int i = 0; i < n; ++i) 3 if (s[i] == c) { 4 s[i] = '\0'; 5 return s; 6 } 7 s[0] = '\0'; 8 return s; 9 }
為了發(fā)現(xiàn)和跟蹤函數(shù)和源文件之間的要求和保證,SSCC使用了一個(gè)邊界數(shù)據(jù)文件。圖2.19顯示了SSCC機(jī)制的一種可能的實(shí)現(xiàn)。
圖2.19 一個(gè)可能的“有安全保證的”C/C++(SSCC)實(shí)現(xiàn)
如果給SSCC提供應(yīng)用程序的整個(gè)源代碼,包括所有的庫(kù),它就可以保證不存在緩沖區(qū)溢出。
推薦閱讀
- Java程序設(shè)計(jì)(慕課版)
- 流量的秘密:Google Analytics網(wǎng)站分析與優(yōu)化技巧(第2版)
- Arduino by Example
- JavaScript語(yǔ)言精髓與編程實(shí)踐(第3版)
- Learning ArcGIS Pro
- Visual C
- 精通Python設(shè)計(jì)模式(第2版)
- Elasticsearch for Hadoop
- Visual Studio Code 權(quán)威指南
- Android Studio開(kāi)發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到App上線 (移動(dòng)開(kāi)發(fā)叢書(shū))
- Python Programming for Arduino
- C語(yǔ)言編程魔法書(shū):基于C11標(biāo)準(zhǔn)
- C語(yǔ)言程序設(shè)計(jì)
- 數(shù)據(jù)預(yù)處理從入門到實(shí)戰(zhàn):基于SQL、R、Python
- Modular Programming with PHP 7