999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言教學實踐應重視的輸入安全性問題

2014-04-29 03:32:03吳佳芬李曙光
電腦迷 2014年15期
關鍵詞:安全性實踐教學

吳佳芬 李曙光

摘 要 本文提出了在C語言教學實踐中應重視教導學生編寫可靠的程序,特別要強調程序的輸入安全性處理。并針對相關問題展開了具體的討論,指出教學中的關鍵點。

關鍵詞 C語言 教學 實踐 輸入 安全性

中圖分類號:G64文獻標識碼:A

0背景

當前計算機系統安全性問題受到了空前的重視,重要原因是互聯網的廣泛應用使不知身在何處的人都可能把信息送到我們的計算機里去。隨著近年移動互聯網、物聯網技術的飛速發展,系統安全、信息安全等問題又面臨了新的挑戰。歸根溯源,目前廣泛使用的系統和應用軟件中存在大量安全性缺陷,計算機基礎教學中缺乏對學習者在安全性方面知識和規范的教育可能難辭其咎。

我們希望從學生開始學習程序設計時就特別關注程序安全性問題,在教學中不斷出現對安全性問題的討論,提高學生的編寫健壯性好、安全性高的程序的意識和能力。

1正確與可靠

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

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

2遇到不正確輸入時的行為

考慮這樣的情況:如果寫了一個程序,該程序對形式合適的數據都能正確的計算并輸出其平均值,這個程序完成了所需工作,那么可以認為該程序是正確的。現在假設輸入的數據有錯,例如文件里出現了不能轉換為數值的字符或字符序列,這時程序已不能“正常”完成工作了,那么這個程序可能出現的行為有:

(1)報告被處理數據有錯,輸出正常輸入數據的平均值后結束;

(2)報告數據有錯,丟掉非數字字符后繼續處理,直至讀入所有數據并輸出得到正確數據的平均值后結束;

(3)報告數據有錯后立即結束;

(4)沒有任何報告,產生輸出后結束;

(5)不產生任何輸出就立即結束;

(6)陷入無限循環,既不報告數據有錯誤也不結束;

(7)進入不明狀態,胡亂修改內存甚至破壞其他正在運行的程序,或破壞計算機內存或外存里的數據后結束或不結束。

對用戶而言,前三種情況比較容易接受。第4種情況容易給人造成假象和誤解。第5、6兩種情況會讓人感到莫名其妙。最后的情況則非常可怕。實際程序中常常會遇到不合需要的輸入,任何實用的程序,都必須考慮對錯誤輸入的恰當處理。設計程序時要確定恰當的原則并始終如一的貫徹。處理的原則可能與應用有關,但也有一般性的原則。例如:(1)保證任何錯誤輸入不破壞本程序自身,不將程序帶入無法預知的狀態。對上例,就是避免最后兩種情況的產生。(2)保證程序對任何輸入都有合理反應,必要時給用戶提供適當的報告。上例中的前三種處理方式都有報告。(3)盡可能恢復到能繼續工作的狀態。上例中的第2種情況。

可見,設計和實現交互式程序時,必須合理處置錯誤輸入。不但要使程序保證對正確輸入能正確工作,還需要保證它遇到不正確輸入時具有可保證的合理行為。沒有這方面保證的程序或系統是有問題的。

3輸入與安全性

程序安全性的一個大問題就是程序輸入的處理。第一,輸入是不受編寫程序的人控制的;第二,已經寫好的程序可能遇到各種各樣不滿足需要的輸入;第三,在遇到不滿足需要的輸入時應該如何處理,常常出現很難權衡的設計選擇。

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

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

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

4結語

由于C語言不做運行時檢查,因此可能導致程序運行時出現的錯誤沒有報告,典型的情況有:數組越界訪問、空指針或不合法指針的間接訪問、聯合變量的不正確使用等等。在教學的過程中,這些問題都值得向學生提出并加以討論。每個程序設計的學習者,都可能對未來計算機系統的安全運行和社會安全產生影響,因此,作為C語言教學工作的承擔者對此負有重大責任。

猜你喜歡
安全性實踐教學
兩款輸液泵的輸血安全性評估
新染料可提高電動汽車安全性
微課讓高中數學教學更高效
甘肅教育(2020年14期)2020-09-11 07:57:50
“自我診斷表”在高中數學教學中的應用
東方教育(2017年19期)2017-12-05 15:14:48
對外漢語教學中“想”和“要”的比較
唐山文學(2016年2期)2017-01-15 14:03:59
初中政治教學中強化新八德教育探討
成才之路(2016年26期)2016-10-08 11:14:30
體驗式學習在數學教學中的應用研究
成才之路(2016年25期)2016-10-08 10:50:54
生物專業師范生教學實習的問題與對策研究
成才之路(2016年25期)2016-10-08 10:01:19
校企協同實施高職專業課程改革的實踐研究
科技視界(2016年20期)2016-09-29 12:54:06
ApplePay橫空出世 安全性遭受質疑 拿什么保護你,我的蘋果支付?
主站蜘蛛池模板: 91po国产在线精品免费观看| 青青热久免费精品视频6| 丁香五月激情图片| 欧美日韩导航| 波多野结衣一区二区三区四区视频 | 无码免费试看| 成人一区专区在线观看| 国产午夜不卡| 视频在线观看一区二区| 在线观看免费人成视频色快速| 一本大道香蕉中文日本不卡高清二区 | 国产精品成人不卡在线观看| 欧美精品亚洲精品日韩专| 欧美性爱精品一区二区三区| 三级国产在线观看| 狠狠久久综合伊人不卡| 欧美成人二区| 色哟哟精品无码网站在线播放视频| 免费无码又爽又黄又刺激网站| 亚洲第一黄片大全| 欧美在线国产| 国产精品视频久| 影音先锋丝袜制服| 国产成人久视频免费| 亚洲人成网站色7777| 午夜日本永久乱码免费播放片| 2022国产91精品久久久久久| 美女视频黄又黄又免费高清| 人妻免费无码不卡视频| 国产午夜不卡| 国产婬乱a一级毛片多女| 伊人久久青草青青综合| 婷婷成人综合| 中文无码精品a∨在线观看| 色爽网免费视频| 中文字幕人成乱码熟女免费| 在线播放91| 99视频在线看| 在线播放真实国产乱子伦| 嫩草在线视频| 高清大学生毛片一级| 色偷偷男人的天堂亚洲av| 99精品在线看| 欧洲熟妇精品视频| 免费中文字幕一级毛片| 狠狠五月天中文字幕| 精品自窥自偷在线看| 一本久道久久综合多人| 欧美不卡二区| 久久香蕉国产线看观看精品蕉| 中文字幕在线播放不卡| 久久窝窝国产精品午夜看片| 久久99精品国产麻豆宅宅| 亚洲无码熟妇人妻AV在线| 欧美一区二区精品久久久| 99久久精品免费看国产免费软件| 亚洲天堂首页| 国内自拍久第一页| 亚洲人成亚洲精品| 亚洲小视频网站| 欧美成人手机在线视频| 成人噜噜噜视频在线观看| 国产精品视频第一专区| 99热这里只有精品在线观看| 欧美亚洲国产精品久久蜜芽| 日韩无码黄色| 最新亚洲人成无码网站欣赏网| 日本道中文字幕久久一区| 人妻免费无码不卡视频| 欧美色综合网站| 欧美一区中文字幕| 激情综合婷婷丁香五月尤物| 久久96热在精品国产高清| 青草娱乐极品免费视频| 超碰aⅴ人人做人人爽欧美| 五月天久久婷婷| 欧美成人午夜视频| 色香蕉影院| 超碰色了色| 亚洲精品国产乱码不卡| 午夜a视频| 小蝌蚪亚洲精品国产|