例如: 定義一個(gè)字符串char a[20],和一個(gè)字符串c[]="i am a teacher!"; 把c復(fù)制到a中就可以這樣用:strcpy(a,c); 這個(gè)函數(shù)包含在頭文件 中. 程序代碼: #include #include void main() {char a[20],c[]="i am teacher!"; strcpy(a,c); cout
成都做網(wǎng)站、網(wǎng)站建設(shè)的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗(yàn)。創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗(yàn),見的多,溝通容易、能幫助客戶提出的運(yùn)營建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價(jià)值服務(wù)。
帶有_s的函數(shù)只是微軟在VS中給出的吧,并不是標(biāo)準(zhǔn)庫中的內(nèi)容,如果要使用這些函數(shù),只能用微軟的編譯器了。
為什么要替換成安全函數(shù),這里面就涉及到了一種漏洞攻擊, 緩沖區(qū)溢出攻擊 。
緩沖區(qū)溢出是指當(dāng)計(jì)算機(jī)向緩沖區(qū)內(nèi)填充數(shù)據(jù)位數(shù)時(shí)超過了緩沖區(qū)本身的容量,溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上。理想的情況是:程序會(huì)檢查數(shù)據(jù)長度,而且并不允許輸入超過緩沖區(qū)長度的字符。但是絕大多數(shù)程序都會(huì)假設(shè)數(shù)據(jù)長度總是與所分配的儲(chǔ)存空間相匹配,這就為緩沖區(qū)溢出埋下隱患。操作系統(tǒng)所使用的緩沖區(qū),又被稱為**“堆棧”**,在各個(gè)操作進(jìn)程之間,指令會(huì)被臨時(shí)儲(chǔ)存在“堆棧”當(dāng)中,“堆棧”也會(huì)出現(xiàn)緩沖區(qū)溢出。緩沖區(qū)溢出攻擊是利用緩沖區(qū)溢出漏洞所進(jìn)行的攻擊行動(dòng)。利用緩沖區(qū)溢出攻擊,可以導(dǎo)致程序運(yùn)行失敗、系統(tǒng)關(guān)機(jī)、重新啟動(dòng)等后果。
緩沖區(qū)溢出中,最為危險(xiǎn)的是堆棧溢出,因?yàn)槿肭终呖梢岳枚褩R绯觯? 在函數(shù)返回時(shí)改變返回程序的地址 ,讓其跳轉(zhuǎn)到任意地址,帶來的危害一種是 程序崩潰導(dǎo)致拒絕服務(wù) 分段錯(cuò)誤(Segmentation fault),另外一種就是 跳轉(zhuǎn)并且執(zhí)行一段惡意代碼 ,比如得到shell,然后為所欲為。
C語言沒有提供字符串類型,字符串以字符數(shù)組的形式出現(xiàn),C標(biāo)準(zhǔn)庫提供了一些操作字符串的函數(shù),主要有:strcmp 字符串比較函數(shù),strcpy 字符串拷貝函數(shù), strlen 字符串測長函數(shù), strcat字符串連接函數(shù),sprintf格式化字符串拷貝函數(shù)等等。 因?yàn)樽址褪且浴Y(jié)束的一段內(nèi)存 ,這些函數(shù) 實(shí)質(zhì)上也就是操作內(nèi)存的函數(shù) 。
也就是說,安全函數(shù)和非安全函數(shù)最大的差異就是:為了防止堆棧溢出,安全函數(shù)多了一個(gè)確定buff長度的參數(shù)。
舉個(gè)例子:
非安全函數(shù):
安全函數(shù):
開源輕量操作系統(tǒng):
docs文檔中心:
當(dāng)前標(biāo)題:c語言安全函數(shù),c語言安全函數(shù)是什么
文章地址:http://vcdvsql.cn/article4/heogoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、云服務(wù)器、網(wǎng)站策劃、網(wǎng)站建設(shè)、服務(wù)器托管、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)