官术网_书友最值得收藏!

2.5 字符串處理函數(shù)

2.5.1 gets()

如果在C和C++安全編程領(lǐng)域存在一條硬性的規(guī)定,那么它一定是永遠不要使用gets()!在本書有漏洞的程序例子中,gets()函數(shù)頻頻出現(xiàn)。gets()函數(shù)從標準輸入讀取一行輸入到緩沖區(qū)中,直到遇到一個換行符或文件結(jié)束標志(EOF)為止。它不對緩沖區(qū)溢出進行任何檢測。以下文字摘自該函數(shù)的使用手冊:

永遠不要使用gets()。因為除非事先知道數(shù)據(jù),否則永遠無法確定gets()將會讀入多少字符,而且gets()會在緩沖區(qū)末尾以外繼續(xù)存儲字符,因此對它的使用是極其危險的。使用它只會破壞計算機系統(tǒng)的安全性。

如前所述,gets()函數(shù)已在ISO/IEC 9899:TC3中被棄用并在C11中被刪除。

由于gets()函數(shù)不能被安全地使用,因此有必要使用替代的函數(shù),對此有幾個不錯的選項可用。選擇哪個函數(shù)主要取決于采取的總體辦法。

主站蜘蛛池模板: 通州市| 永安市| 满洲里市| 陆良县| 永胜县| 五指山市| 南昌市| 明溪县| 房产| 麟游县| 鱼台县| 阜阳市| 昌平区| 江山市| 万山特区| 利辛县| 四会市| 汽车| 台东市| 怀宁县| 沅江市| 庆阳市| 霍邱县| 泰安市| 望城县| 济宁市| 宜阳县| 临桂县| 尼玛县| 卢龙县| 元朗区| 额尔古纳市| 商水县| 股票| 榆林市| 南丹县| 惠水县| 宝兴县| 洛宁县| 东城区| 略阳县|