- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 321字
- 2020-10-30 17:56:43
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ù)主要取決于采取的總體辦法。
推薦閱讀
- 軟件項目估算
- Testing with JUnit
- CockroachDB權(quán)威指南
- C++面向?qū)ο蟪绦蛟O(shè)計(微課版)
- 區(qū)塊鏈:以太坊DApp開發(fā)實戰(zhàn)
- PHP+MySQL+Dreamweaver動態(tài)網(wǎng)站開發(fā)實例教程
- Python數(shù)據(jù)結(jié)構(gòu)與算法(視頻教學版)
- Mobile Device Exploitation Cookbook
- Procedural Content Generation for C++ Game Development
- Natural Language Processing with Python Quick Start Guide
- Fastdata Processing with Spark
- 跟戴銘學iOS編程:理順核心知識點
- MongoDB Cookbook(Second Edition)
- 分布式數(shù)據(jù)庫HBase案例教程
- 零基礎(chǔ)PHP從入門到精通