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

2.5 字符串處理函數

2.5.1 gets()

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

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

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

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

主站蜘蛛池模板: 邯郸县| 土默特右旗| 巴林左旗| 衡阳市| 大庆市| 乌拉特中旗| 乾安县| 沙湾县| 福安市| 山西省| 即墨市| 自贡市| 稷山县| 乌兰县| 周口市| 客服| 章丘市| 盱眙县| 石河子市| 鸡东县| 汽车| 中江县| 图木舒克市| 宜宾市| 泽普县| 白山市| 崇义县| 蕲春县| 深圳市| 松潘县| 百色市| 望谟县| 汶川县| 巩义市| 东至县| 葫芦岛市| 濮阳市| 绥棱县| 和龙市| 青河县| 大冶市|