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

2.5 字符串處理函數

2.5.1 gets()

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

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

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

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

主站蜘蛛池模板: 金寨县| 梅河口市| 枣庄市| 汽车| 池州市| 长治县| 鞍山市| 青川县| 定日县| 西和县| 汾西县| 台州市| 青铜峡市| 波密县| 溧阳市| 根河市| 河北省| 运城市| 河北省| 万宁市| 仁寿县| 雅江县| 浏阳市| 天台县| 盱眙县| 故城县| 囊谦县| 宝丰县| 吴旗县| 青川县| 科技| 郴州市| 阳泉市| 宿州市| 安阳县| 水富县| 同江市| 噶尔县| 四子王旗| 井陉县| 富裕县|