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

2.5 字符串處理函數

2.5.1 gets()

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

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

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

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

主站蜘蛛池模板: 宿迁市| 荣成市| 玉门市| 昌都县| 平利县| 永善县| 日照市| 滁州市| 徐水县| 兴仁县| 兴海县| 新宁县| 湖北省| 石城县| 定襄县| 炉霍县| 娄底市| 卫辉市| 昔阳县| 安新县| 海林市| 金阳县| 阜新市| 阳春市| 吴忠市| 长垣县| 峨眉山市| 启东市| 互助| 临桂县| 武山县| 英吉沙县| 调兵山市| 田林县| 子洲县| 新营市| 桓台县| 手游| 太保市| 尖扎县| 自治县|