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