[摘要]隨著計算機網(wǎng)絡技術的飛速發(fā)展,網(wǎng)絡課堂在學校教學中得到廣泛地普及與發(fā)展,使得教育教學改革有了新的方向。但網(wǎng)絡課堂本身在設計上存在不少問題,一定程度上影響了使用效果,本文集中討論網(wǎng)絡課堂Web系統(tǒng)開發(fā)中的安全性問題。
[關鍵詞]網(wǎng)絡課堂 身份驗證 授權
一、網(wǎng)絡課堂安全性概述
使用網(wǎng)絡課堂輔助教學以其突破時間、空間、地點的限制和共享資源、交流討論方便等優(yōu)點得到了眾多學校教師的青睞,網(wǎng)絡課堂可以充分利用網(wǎng)絡的優(yōu)勢來搭建一個虛擬的教學環(huán)境, 在其中進行與教學相關的工作,從而彌補傳統(tǒng)課堂教學的不足。2000年,教育部啟動的“新世紀網(wǎng)絡課程建設工程”中的大多數(shù)網(wǎng)絡課程都是以網(wǎng)絡課堂的形式實現(xiàn)的,但在網(wǎng)絡課堂的使用過程中,由于系統(tǒng)本身的安全性不高而導致的各種問題越來越引起人們的重視。
無論是使用早期工具JSP、ASP、PHP還是最新的ASP.NET技術開發(fā)的網(wǎng)絡課堂系統(tǒng),都會采用模塊化的設計方法,系統(tǒng)的功能模塊一般包括網(wǎng)絡信息發(fā)布模塊、網(wǎng)絡選課模塊、網(wǎng)絡答疑模塊、教學考評模塊等,這些功能模塊中的信息都與學校的教學管理工作密切相關,對于信息的安全性要求是非常高的。因此,在網(wǎng)絡課堂開發(fā)過程中考慮使用用戶身份驗證、數(shù)據(jù)加密、窗體認證、存儲過程等安全策略,在一定程度上保證系統(tǒng)安全是十分必要的。
二、ASP.NET安全技術
本文討論的網(wǎng)絡課堂系統(tǒng)是使用ASP.NET框架結合SQL Server數(shù)據(jù)庫進行開發(fā)的,ASP.NET作為一個功能強大的Web開發(fā)工具,提供了高效的安全策略,基于ASP.NET框架的安全策略包括身份驗證、用戶授權和通信安全三個方面。
1.身份驗證
身份驗證是一個用來標識應用程序客戶端合法身份的過程。這里所說的客戶端可能是終端用戶、計算機或某一服務進程。利用ASP.NET配置文件Web.config中
2.用戶授權
授權過程負責控制通過身份驗證的客戶端可以訪問哪些資源,以及可以執(zhí)行哪些操作,包括對文件、數(shù)據(jù)庫等資源的訪問及操作。考慮系統(tǒng)的延展性和穩(wěn)定性,許多Web應用程序都是通過調用方法來授權客戶端所能夠執(zhí)行的操作,不讓用戶直接通過URL地址訪問底層的資源。ASP.NET支持兩種基本授權方式,一種是文件授權,另一種是URL授權。
3.安全通信
應用程序執(zhí)行時需要在應用程序的各層之間頻繁傳輸數(shù)據(jù),其中不乏一些重要的機密數(shù)據(jù),比如,賬戶密碼,登錄憑證,證件號碼等。為了防止重要信息或機密數(shù)據(jù)在傳輸過程中被非法截取和修改,對通信端點必須加以保護。
三、網(wǎng)絡課堂安全技術
1.窗體認證
在網(wǎng)絡課堂Web系統(tǒng)設計中,結合ASP.NET的Form認證和用戶授權,采用基于角色的認證授權方案。這種權限的設計方案具體為:根據(jù)使用系統(tǒng)的不同人員或不同工作性質,劃分為普通用戶、高級用戶、信息發(fā)布員、數(shù)據(jù)維護員和高級管理員等不同角色,不同角色擁有不同功能的權限,一個用戶可以擁有多個角色,這樣用戶與訪問權限就實現(xiàn)了邏輯分離。角色的權限設定后只需給用戶分配一個或多個角色即可,而不必一個一個地設定用戶權限,大大方便了系統(tǒng)的管理。
窗體認證的步驟為:用戶發(fā)出一個請求,IIS允許該請求,用戶被重定向到登錄頁面,用戶提供憑據(jù)信息(用戶名和密碼)并提交登錄窗體。系統(tǒng)根據(jù)數(shù)據(jù)庫對提交的憑據(jù)信息進行驗證,若通過則獲取用戶角色信息,并根據(jù)角色與功能權限的對應關系得到用戶對所有功能模塊的權限情況。登錄系統(tǒng)后再根據(jù)用戶對各模塊功能權限的不同訪問對應的頁面,在執(zhí)行具體操作時,根據(jù)權限決定對應頁面是否可以訪問,這樣從模塊功能的鏈接上保證了系統(tǒng)安全。
2.口令加密
網(wǎng)絡課堂系統(tǒng)中有許多重要的信息,其中的口令是系統(tǒng)中最敏感、最關鍵的信息,口令的安全管理至關重要。在系統(tǒng)設計中,口令信息應保存在數(shù)據(jù)庫中,且數(shù)據(jù)庫的用戶表中存放的不能是用戶輸入的明文,而是經(jīng)過加密算法計算出的密文。比較簡單而有效的做法就是利用腳本語言在管理的客戶端用戶提交時加密后再傳送,服務器中數(shù)據(jù)庫直接以加密后的編碼存儲。下面一條語句可以實現(xiàn)對口令數(shù)據(jù)進行“SHA1”(散列值加密)變換:String hashed=FormsAuthentication.HashPasswordForStoringInConfigFile-(PasswordTextBox.Text,“SHA1”)。
這樣,數(shù)據(jù)庫中保存的就是經(jīng)過加密的長度為40位的密文字符串,真正的密碼就只有用戶可以知道了,即使被截獲,也只能獲得不可用來登錄的密碼密文。
3.防SQL注入攻擊
SQL注入式攻擊指的是利用程序開發(fā)者編程過程中的漏洞,將額外的惡意SQL語句代碼追加到合法代碼之后,來影響被執(zhí)行的SQL腳本,從數(shù)據(jù)庫獲得原本無權訪問的數(shù)據(jù)信息,防止SQL注入式攻擊的方法有很多種。
(1)過濾可疑字符。在利用表單輸入的內容構造SQL命令之前,把所有輸入內容過濾,如果有可疑字符(如“’”、“or”、“”等),直接跳轉出錯頁面。
(2)限制輸入長度。由于SQL注入式攻擊需要追加額外的惡意代碼,那么對于用戶的輸入內容長度和類型進行限定,可以大大增加攻擊者在SQL命令中插入有害代碼的難度。
(3)使用存儲過程執(zhí)行查詢。存儲過程是一組經(jīng)過壓縮處理的經(jīng)常使用的命令(如交叉表的查詢,增、刪、改操作),SQL參數(shù)的傳遞方式可以防止攻擊者利用單引號和連字符實施攻擊。
四、結束語
本文對采用ASP.NET構建的B/S結構的網(wǎng)絡課堂系統(tǒng)的安全模式設計進行了討論,對Web系統(tǒng)中的用戶身份驗證、數(shù)據(jù)庫的安全、系統(tǒng)訪問安全和應用程序安全等問題做了一定分析,并且針對每個問題提出了相應的解決辦法,使得網(wǎng)絡課堂基本達到系統(tǒng)的安全指標。
課題名稱:高等醫(yī)學院校公共計算機基礎課程教學
課題編號:HGG220
課題類別:黑龍江省教育廳規(guī)劃課題
課題負責人:馬英
(作者單位:黑龍江中醫(yī)藥大學)