亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C語言教學(xué)實(shí)踐應(yīng)重視的輸入安全性問題

        2014-04-29 03:32:03吳佳芬李曙光
        電腦迷 2014年15期
        關(guān)鍵詞:輸入安全性實(shí)踐

        吳佳芬 李曙光

        摘 要 本文提出了在C語言教學(xué)實(shí)踐中應(yīng)重視教導(dǎo)學(xué)生編寫可靠的程序,特別要強(qiáng)調(diào)程序的輸入安全性處理。并針對(duì)相關(guān)問題展開了具體的討論,指出教學(xué)中的關(guān)鍵點(diǎn)。

        關(guān)鍵詞 C語言 教學(xué) 實(shí)踐 輸入 安全性

        中圖分類號(hào):G64文獻(xiàn)標(biāo)識(shí)碼:A

        0背景

        當(dāng)前計(jì)算機(jī)系統(tǒng)安全性問題受到了空前的重視,重要原因是互聯(lián)網(wǎng)的廣泛應(yīng)用使不知身在何處的人都可能把信息送到我們的計(jì)算機(jī)里去。隨著近年移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,系統(tǒng)安全、信息安全等問題又面臨了新的挑戰(zhàn)。歸根溯源,目前廣泛使用的系統(tǒng)和應(yīng)用軟件中存在大量安全性缺陷,計(jì)算機(jī)基礎(chǔ)教學(xué)中缺乏對(duì)學(xué)習(xí)者在安全性方面知識(shí)和規(guī)范的教育可能難辭其咎。

        我們希望從學(xué)生開始學(xué)習(xí)程序設(shè)計(jì)時(shí)就特別關(guān)注程序安全性問題,在教學(xué)中不斷出現(xiàn)對(duì)安全性問題的討論,提高學(xué)生的編寫健壯性好、安全性高的程序的意識(shí)和能力。

        1正確與可靠

        我們要求學(xué)生編寫正確的程序,這是C語言教學(xué)最基本的要求。但什么是正確的程序呢?針對(duì)一個(gè)具體問題寫出的一段程序或是一個(gè)函數(shù)的正確與否,可以設(shè)法給出嚴(yán)格的定義,這種定義可以是一個(gè)具有數(shù)學(xué)意義的嚴(yán)格性定義,程序理論研究者在這方面已經(jīng)做了很多工作。本文并不討論嚴(yán)格的定義,主要借助以下直觀觀察:(1)一個(gè)C函數(shù)從參數(shù)計(jì)算出返回值的過程,即從輸入到輸出。(2)一個(gè)與外部交互的程序從輸入的數(shù)據(jù)計(jì)算出輸出數(shù)據(jù)的過程。

        但是,函數(shù)和程序通常不是對(duì)所有輸入都能計(jì)算出輸出的。例如求平方根的函數(shù),它只能對(duì)非負(fù)的double類型的數(shù)值計(jì)算出結(jié)果。又如,C編譯程序只能對(duì)滿足C語言語法的字符串生成目標(biāo)代碼。參考上述情況,對(duì)程序的正確性可以有如下認(rèn)識(shí):(1)一個(gè)C函數(shù)對(duì)滿足要求的參數(shù)計(jì)算出正確的返回值。(2)一個(gè)與外部交互的程序,對(duì)滿足要求的輸入數(shù)據(jù)都能計(jì)算出正確的輸出。

        2遇到不正確輸入時(shí)的行為

        考慮這樣的情況:如果寫了一個(gè)程序,該程序?qū)π问胶线m的數(shù)據(jù)都能正確的計(jì)算并輸出其平均值,這個(gè)程序完成了所需工作,那么可以認(rèn)為該程序是正確的?,F(xiàn)在假設(shè)輸入的數(shù)據(jù)有錯(cuò),例如文件里出現(xiàn)了不能轉(zhuǎn)換為數(shù)值的字符或字符序列,這時(shí)程序已不能“正?!蓖瓿晒ぷ髁?,那么這個(gè)程序可能出現(xiàn)的行為有:

        (1)報(bào)告被處理數(shù)據(jù)有錯(cuò),輸出正常輸入數(shù)據(jù)的平均值后結(jié)束;

        (2)報(bào)告數(shù)據(jù)有錯(cuò),丟掉非數(shù)字字符后繼續(xù)處理,直至讀入所有數(shù)據(jù)并輸出得到正確數(shù)據(jù)的平均值后結(jié)束;

        (3)報(bào)告數(shù)據(jù)有錯(cuò)后立即結(jié)束;

        (4)沒有任何報(bào)告,產(chǎn)生輸出后結(jié)束;

        (5)不產(chǎn)生任何輸出就立即結(jié)束;

        (6)陷入無限循環(huán),既不報(bào)告數(shù)據(jù)有錯(cuò)誤也不結(jié)束;

        (7)進(jìn)入不明狀態(tài),胡亂修改內(nèi)存甚至破壞其他正在運(yùn)行的程序,或破壞計(jì)算機(jī)內(nèi)存或外存里的數(shù)據(jù)后結(jié)束或不結(jié)束。

        對(duì)用戶而言,前三種情況比較容易接受。第4種情況容易給人造成假象和誤解。第5、6兩種情況會(huì)讓人感到莫名其妙。最后的情況則非??膳隆?shí)際程序中常常會(huì)遇到不合需要的輸入,任何實(shí)用的程序,都必須考慮對(duì)錯(cuò)誤輸入的恰當(dāng)處理。設(shè)計(jì)程序時(shí)要確定恰當(dāng)?shù)脑瓌t并始終如一的貫徹。處理的原則可能與應(yīng)用有關(guān),但也有一般性的原則。例如:(1)保證任何錯(cuò)誤輸入不破壞本程序自身,不將程序帶入無法預(yù)知的狀態(tài)。對(duì)上例,就是避免最后兩種情況的產(chǎn)生。(2)保證程序?qū)θ魏屋斎攵加泻侠矸磻?yīng),必要時(shí)給用戶提供適當(dāng)?shù)膱?bào)告。上例中的前三種處理方式都有報(bào)告。(3)盡可能恢復(fù)到能繼續(xù)工作的狀態(tài)。上例中的第2種情況。

        可見,設(shè)計(jì)和實(shí)現(xiàn)交互式程序時(shí),必須合理處置錯(cuò)誤輸入。不但要使程序保證對(duì)正確輸入能正確工作,還需要保證它遇到不正確輸入時(shí)具有可保證的合理行為。沒有這方面保證的程序或系統(tǒng)是有問題的。

        3輸入與安全性

        程序安全性的一個(gè)大問題就是程序輸入的處理。第一,輸入是不受編寫程序的人控制的;第二,已經(jīng)寫好的程序可能遇到各種各樣不滿足需要的輸入;第三,在遇到不滿足需要的輸入時(shí)應(yīng)該如何處理,常常出現(xiàn)很難權(quán)衡的設(shè)計(jì)選擇。

        合理地處理不合要求的輸入,第一個(gè)條件是檢查輸入。要幫助學(xué)生明白這樣幾點(diǎn):第一,從理論上說,程序的每個(gè)輸入都應(yīng)該仔細(xì)檢查,確定其是否滿足程序的需要。第二,只有滿足需要的輸入才能送給后續(xù)處理階段。第三,要了解處理不正確輸入時(shí)的各方面考慮。

        C語言標(biāo)準(zhǔn)函數(shù)庫的輸入函數(shù)的輸入機(jī)制本身就是有安全性缺陷的。例如,gets函數(shù)沒有輸入長(zhǎng)度限制,因此完全不應(yīng)該使用而應(yīng)該用fgets函數(shù)來代替;又如,scanf輸入函數(shù)的%s轉(zhuǎn)換描述不安全,使用時(shí)必須加上域長(zhǎng)度限制,如%256s等。在使用C語言的輸入函數(shù)時(shí),應(yīng)該檢查其返回值,了解輸入工作完成的情況,理解如何在輸入未能正常完成的情況并且做出合理的處理。

        目前討論較多的輸入問題有兩個(gè):(1)緩沖區(qū)溢出:通過饋入超長(zhǎng)字符序列的方式造成程序的輸入緩沖區(qū)溢出,從而將某些信息寫入系統(tǒng)內(nèi)存中不應(yīng)使用的位置,藉此造成進(jìn)一步破壞的可能性。(2)整數(shù)溢出:輸入的整數(shù)有時(shí)不是簡(jiǎn)單地作為程序里的數(shù)據(jù),而是用于做其他事情。例如確定內(nèi)存分配的大小,非合法范圍的整數(shù)就可能導(dǎo)致系統(tǒng)垮臺(tái),或者導(dǎo)致外部取得對(duì)程序的控制。

        4結(jié)語

        由于C語言不做運(yùn)行時(shí)檢查,因此可能導(dǎo)致程序運(yùn)行時(shí)出現(xiàn)的錯(cuò)誤沒有報(bào)告,典型的情況有:數(shù)組越界訪問、空指針或不合法指針的間接訪問、聯(lián)合變量的不正確使用等等。在教學(xué)的過程中,這些問題都值得向?qū)W生提出并加以討論。每個(gè)程序設(shè)計(jì)的學(xué)習(xí)者,都可能對(duì)未來計(jì)算機(jī)系統(tǒng)的安全運(yùn)行和社會(huì)安全產(chǎn)生影響,因此,作為C語言教學(xué)工作的承擔(dān)者對(duì)此負(fù)有重大責(zé)任。

        猜你喜歡
        輸入安全性實(shí)踐
        新染料可提高電動(dòng)汽車安全性
        某既有隔震建筑檢測(cè)與安全性鑒定
        “四環(huán)節(jié)”下的牛津英語課堂模式
        微篇商務(wù)英語閱讀教學(xué)模式探索
        淺議習(xí)得理論下初中英語教學(xué)的策略調(diào)整
        考試周刊(2016年79期)2016-10-13 22:42:09
        高中英語閱讀與寫作有效結(jié)合
        考試周刊(2016年76期)2016-10-09 09:22:30
        初中政治教學(xué)中強(qiáng)化新八德教育探討
        成才之路(2016年26期)2016-10-08 11:14:30
        體驗(yàn)式學(xué)習(xí)在數(shù)學(xué)教學(xué)中的應(yīng)用研究
        成才之路(2016年25期)2016-10-08 10:50:54
        生物專業(yè)師范生教學(xué)實(shí)習(xí)的問題與對(duì)策研究
        成才之路(2016年25期)2016-10-08 10:01:19
        校企協(xié)同實(shí)施高職專業(yè)課程改革的實(shí)踐研究
        科技視界(2016年20期)2016-09-29 12:54:06
        精品国产精品久久一区免费式| 国产精品亚洲一级av第二区| 免费人成视网站在线剧情| 国产精品99精品久久免费| 中文无码一区二区不卡αv| 亚洲精品一二区| 偷拍女厕尿尿在线免费看| 亚洲天堂av黄色在线观看| 亚洲国产精品久久精品| 国产裸体xxxx视频在线播放| 内射合集对白在线| 精品国内自产拍在线观看| 亚洲精品亚洲人成在线播放| 免费高清日本一区二区| 亚洲午夜精品一区二区麻豆av| 人妻洗澡被强公日日澡电影| 午夜成人理论无码电影在线播放 | 精品一区二区三区无码免费视频| 国产91对白在线观看| 日韩av中文字幕一卡二卡| 手机久草视频福利在线观看 | 在线视频自拍视频激情| 不卡的av网站在线观看| 日韩欧美亚洲综合久久影院ds| 国产午夜激无码av毛片| 亚洲美女av一区二区| 久久亚洲中文字幕伊人久久大| 无码熟妇人妻av在线影片最多| 亚洲日韩中文字幕一区| 亚洲九九夜夜| 精品亚洲一区二区在线观看| av在线免费观看蜜桃| 国产乱码一二三区精品| 日日噜噜夜夜爽爽| 久久精品国产亚洲AV古装片| 亚洲av男人的天堂在线| 无码国产成人午夜电影在线观看| 在线不卡av片免费观看| 亚洲中文字幕乱码免费| 色小姐在线视频中文字幕| 日本少妇高潮喷水视频|