摘要:ASP.NET作為微軟的.NET構(gòu)架中的一部分,已成為開(kāi)發(fā)管理信息系統(tǒng)的主流開(kāi)發(fā)工具。該文主要討論了ASP.NET的優(yōu)勢(shì),系統(tǒng)設(shè)計(jì)結(jié)構(gòu),.NET數(shù)據(jù)庫(kù)技術(shù)以及實(shí)現(xiàn)ASP.NET應(yīng)用程序安全性的策略和解決方案。對(duì)于構(gòu)建完整的信息管理系統(tǒng)具有一定的借鑒作用。
關(guān)鍵詞:.NET;信息管理;結(jié)構(gòu);安全;策略
中圖分類(lèi)號(hào):TP302文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)32-8928-03
The Research of Information Management System Design Bases on NET
LIU Hong-ming, LI Dong-kang
(Department of Computer Science,TongHua Normal University, Tonghua 134002, China)
Abstract: ASP.NET as a part of Microsoft .NET framework,has become the mainstream of development tools to design management information systems.This article mainly discussed the advantages of ASP.NET,system design structure,.NET database technology and the realization of ASP.NET application security strategies and solutions.For complete information management system built with a certain reference to the role.
Key words: .NET; information management; structure; security;Policy
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)、開(kāi)發(fā)平臺(tái)等計(jì)算機(jī)應(yīng)用技術(shù)的迅猛發(fā)展,管理信息系統(tǒng)(簡(jiǎn)稱為MIS)被廣泛應(yīng)用于企業(yè)、金融、醫(yī)療、教育、物流等很多領(lǐng)域,已經(jīng)越來(lái)越系統(tǒng)化、智能化和網(wǎng)絡(luò)化,在競(jìng)爭(zhēng)激烈的現(xiàn)代社會(huì)發(fā)揮著越來(lái)越重要的作用。Microsoft公司最新推出的Microsoft Visual Studio.NET,它是一套完善的構(gòu)建新一代網(wǎng)絡(luò)應(yīng)用以及桌面應(yīng)用的程序語(yǔ)言和開(kāi)發(fā)工具的集合。利用其中的.NET框架(.NET Framework)中的類(lèi)庫(kù)、完善的集成開(kāi)發(fā)環(huán)境、靈活豐富的程序語(yǔ)言以及相應(yīng)的數(shù)據(jù)庫(kù)技術(shù)可以很簡(jiǎn)便地完成MIS的設(shè)計(jì)。
本文研究了.NET下管理信息系統(tǒng)設(shè)計(jì)理論與技術(shù)解決方案,包括管理信息系統(tǒng)的開(kāi)發(fā)平臺(tái)(ASP.NET)、管理信息系統(tǒng)的結(jié)構(gòu)、ADO.NET技術(shù)以及關(guān)系數(shù)據(jù)庫(kù)技術(shù)和基于網(wǎng)絡(luò)帶來(lái)的安全問(wèn)題提供安全策略等。這些實(shí)現(xiàn)過(guò)程都充分體現(xiàn)了.NET平臺(tái)開(kāi)發(fā)中小項(xiàng)目效率高的優(yōu)勢(shì)。
1 .Net的信息管理系統(tǒng)開(kāi)發(fā)工具
傳統(tǒng)的開(kāi)發(fā)工具ASP(Active Serve Pages)技術(shù)曾經(jīng)在Web應(yīng)用系統(tǒng)中得到了很好的應(yīng)用,但一般只在小型的Web應(yīng)用系統(tǒng)中采用這種方案。隨著Internet/Intranet的飛速發(fā)展,ASP技術(shù)的缺陷也就開(kāi)始逐漸暴露,主要表現(xiàn)在:開(kāi)發(fā)過(guò)程繁瑣;不支持編程語(yǔ)言的全部功能;執(zhí)行效率、安全性和擴(kuò)展性比較差;入侵者可以通過(guò)ASP方便地入侵Web Server、竊取服務(wù)器上的文件、捕獲Web數(shù)據(jù)庫(kù)等系統(tǒng)的用戶口令,甚至惡意刪除服務(wù)器上的文件,造成系統(tǒng)損壞。
為了彌補(bǔ)以上ASP的一些缺點(diǎn),微軟公司推出的一種Internet編程技術(shù),即ASP.NET,它是Microsoft下一代.NET平臺(tái)的動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)。
1.1 ASP.NET的工作原理
ASP.NET是由支持它的服務(wù)器上的.NET Frame Work負(fù)責(zé)解釋執(zhí)行,當(dāng)服務(wù)器接收到一個(gè)對(duì)某ASP+頁(yè)面時(shí),如果這是對(duì)該頁(yè)面創(chuàng)建或修改后的第一次請(qǐng)求,.NET Frame Work就會(huì)把該頁(yè)面中的程序語(yǔ)言內(nèi)容先編譯成MSIL(Microsoft Intermediate Language),然后MSIL再被編譯成機(jī)器碼加以執(zhí)行,最后將執(zhí)行結(jié)果輸出給瀏覽器。ASP+頁(yè)面被編譯成MSIL后,其執(zhí)行代碼以獨(dú)立線程的方式一直存在于服務(wù)器內(nèi)存中。以后對(duì)ASP+頁(yè)面提出請(qǐng)求時(shí),不需要重新編譯,直到該頁(yè)面被修改或Web應(yīng)用程序重啟動(dòng)。
1.2 ASP.NET的優(yōu)勢(shì)
ASP.NET具有ASP所不具有的優(yōu)勢(shì),主要表現(xiàn)在:ASP.NET可以支持VB、C#、JavaScript以及可以編譯成MSIL的程序語(yǔ)言,真正提供了中層語(yǔ)音執(zhí)行結(jié)構(gòu),允許各種語(yǔ)言的使用;執(zhí)行速度較快;ASP.NET通過(guò)ADO.NET技術(shù)可以訪問(wèn)數(shù)據(jù)庫(kù)系統(tǒng),ADO.NET提供的Data Grid等數(shù)據(jù)庫(kù)元件可以直接和數(shù)據(jù)庫(kù)聯(lián)系,把數(shù)據(jù)庫(kù)中的內(nèi)容顯示出來(lái);ASP.NET中還引入了一種真正的組件模式,通過(guò)這種服務(wù)器端的控制以及事件觸發(fā),這種ASP+中的新組件控制是宣告性質(zhì)的,因此只需寫(xiě)很少的代碼,并且在有些情況下,可以完全不寫(xiě)任何代碼。
2 信息管理系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的分析
信息管理系統(tǒng)(MIS)的模式從主機(jī)模式、文件服務(wù)器模式發(fā)展到CLIENT/SERVER(C/S)模式和BROWSE/SERVER(B/S)模式,目前主要應(yīng)用C/S模式和B/S模式,但隨著Internet技術(shù)的發(fā)展,B/S模式日漸流行。到目前為止,C/S和B/S模式都已經(jīng)很成熟,然而在應(yīng)用中又都有各自的優(yōu)勢(shì)和不足,為此在C/S和B/S模式的基礎(chǔ)上,將這兩種結(jié)構(gòu)模型融合在一起,形成一種混合結(jié)構(gòu),充分發(fā)揮兩種模式結(jié)構(gòu)的優(yōu)點(diǎn),形成了一個(gè)較完善的混合結(jié)構(gòu)的模型。
2.1 C/S模式的優(yōu)勢(shì)與不足
即C/S結(jié)構(gòu),是基于資源不對(duì)等,且為實(shí)現(xiàn)共享而提出的,該結(jié)構(gòu)將應(yīng)用一分為二,服務(wù)器(后臺(tái))負(fù)責(zé)數(shù)據(jù)管理,客戶機(jī)(前臺(tái))完成與用戶的交互任務(wù)。C/S模式主要優(yōu)勢(shì)在于交互性強(qiáng)。在C/S中,客戶端有一套完整的應(yīng)用程序,在出錯(cuò)提示、在線幫助等很多方面都有強(qiáng)大的功能。此外,C/S一般面向相對(duì)固定的用戶群,對(duì)信息安全的控制能力很強(qiáng),可以對(duì)權(quán)限多層次校驗(yàn)。但C/S開(kāi)發(fā)成本高,因?yàn)橐粋€(gè)軟件平臺(tái)及開(kāi)發(fā)工具一旦選定,不可能輕易更改。其次,維護(hù)困難。一旦發(fā)生變化,必須更新所有的客戶端程序,當(dāng)系統(tǒng)規(guī)模很大時(shí),維護(hù)代價(jià)很高。因此,C/S模式一般建立在專用的網(wǎng)絡(luò)上,適合在規(guī)模較小、單一數(shù)據(jù)庫(kù)、安全、快捷的網(wǎng)絡(luò)環(huán)境下運(yùn)行,從而可大大提高系統(tǒng)的處理速度和數(shù)據(jù)訪問(wèn)的正確性。
2.2 B/S模式的優(yōu)勢(shì)與不足
即B/S結(jié)構(gòu),是隨internet技術(shù)的興起,對(duì)C/S體系結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在B/S體系結(jié)構(gòu)下,用戶界面完全通過(guò)WWW瀏覽器實(shí)現(xiàn),而系統(tǒng)安裝、修改和維護(hù)全在服務(wù)器端解決。
B/S模式建立在廣域網(wǎng)的基礎(chǔ)之上,與C/S相比,其優(yōu)點(diǎn)有:1)使用簡(jiǎn)單,界面友好;2)易于維護(hù)和升級(jí);3)擴(kuò)展性好,有效保護(hù)投資;4)信息共享度高。
B/S結(jié)構(gòu)的不足在于:B/S結(jié)構(gòu)對(duì)Web服務(wù)器的軟硬件要求都很高,企業(yè)的一次投資比較大。在B/S結(jié)構(gòu)中,隨著用戶的增加導(dǎo)致性能(特別是速度)下降很明顯,因此目前B/S結(jié)構(gòu)用在安全性要求不高,數(shù)據(jù)交互比較小的地方。
2.3 C/S與B/S相結(jié)合的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
基于B/S模式的先進(jìn)性和C/S模式的成熟性,采用一種比較靈活的B/S與C/S結(jié)合,取長(zhǎng)補(bǔ)短、交叉并用的方案。客戶端用戶可以在C/S模式下工作,也可在Web瀏覽器上通過(guò)Web服務(wù)器工作(B/S模式)。根據(jù)一定的原則,將系統(tǒng)的所有子功能分類(lèi),決定哪些子功能適合采用C/S模式,哪些子功能適合采用B/S模式。適合采用C/S模式的子功能應(yīng)具有良好的安全性,較強(qiáng)的交互性,使用范圍比較小,較強(qiáng)的數(shù)據(jù)處理能力。而適合采用B/S模式的子功能使用范圍比較廣,功能變動(dòng)頻繁,安全性要求不是很高。
3 基于.Net管理信息系統(tǒng)設(shè)計(jì)的關(guān)鍵技術(shù)
數(shù)據(jù)庫(kù)訪問(wèn)一直都是數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)的一個(gè)重要方面。作為ADO的改進(jìn)版—ADO.NET的推出可謂恰逢其時(shí),和前一個(gè)版本相比,ADO.NET進(jìn)行了相當(dāng)多的改進(jìn),在平臺(tái)互操作以及可擴(kuò)展性方面都做了很多有意義的創(chuàng)新。
3.1 ADO.NET簡(jiǎn)介
ADO.NET是微軟.NET框架中的一種新的數(shù)據(jù)訪問(wèn)技術(shù),它能用于訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),如SQL Server 2000或2005,及很多其他已經(jīng)配備了OLE DB提供程序的數(shù)據(jù)源。以前,數(shù)據(jù)處理主要依賴于基于連接的雙層模型。當(dāng)數(shù)據(jù)處理越來(lái)越多地使用多層結(jié)構(gòu)時(shí),程序員正逐漸向斷開(kāi)方式轉(zhuǎn)換,以便為應(yīng)用程序提供更佳的可縮放性。ADO.NET提供兩個(gè)核心組件:DataSet和Data Provider,通過(guò)ADO.NET可以從數(shù)據(jù)操作中分解出數(shù)據(jù)訪問(wèn)。
1)ADO.NET的DataSet(數(shù)據(jù)集)組件
ADO.NET的DataSet組件為ADO.NET提供斷開(kāi)式結(jié)構(gòu)服務(wù),DataSet的設(shè)計(jì)是為了實(shí)現(xiàn)獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問(wèn)。因此,它可以用于多種不同的數(shù)據(jù)源,用于XML數(shù)據(jù),或用于管理程序本地的數(shù)據(jù)。DataSet包含一個(gè)或多個(gè)DataTable對(duì)象的集合,這些對(duì)象由數(shù)據(jù)行和數(shù)據(jù)列以及主鍵、外鍵、約束和有關(guān)DataTable對(duì)象中數(shù)據(jù)的關(guān)系信息組成。
2)ADO.NET的Data Provider(數(shù)據(jù)提供程序)組件
ADO.NET結(jié)構(gòu)的另一個(gè)核心元素是.NET數(shù)據(jù)提供程序,它的設(shè)計(jì)是為了實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的連接、操作和快速、只讀的訪問(wèn)。.NET數(shù)據(jù)提供程序包括Connection、Command、DataReader和DataAdapter四種對(duì)象。
3.2 ADO.NET兩種訪問(wèn)數(shù)據(jù)庫(kù)的模式
對(duì)于不同的應(yīng)用需要,ADO.NET設(shè)計(jì)了兩種訪問(wèn)數(shù)據(jù)庫(kù)的模式:使用DataSet對(duì)象進(jìn)行基于連接的訪問(wèn)和使用DataAdapter對(duì)象進(jìn)行的非連接的訪問(wèn)。由于這兩種模式的設(shè)計(jì)目的不同,所以在應(yīng)用程序開(kāi)發(fā)中應(yīng)該根據(jù)實(shí)際需要選擇合適的數(shù)據(jù)庫(kù)訪問(wèn)模式以發(fā)揮出ADO.NET的最佳性能,這對(duì)于提升應(yīng)用程序性能有著非常重要的意義。
1)DataSet對(duì)象。它能夠提供讀取數(shù)據(jù)的本地緩存,而且由于DataSet對(duì)象對(duì)XML良好的支持,使它特別適合于在應(yīng)用的各層之間或通過(guò)Web Service以XML方式進(jìn)行傳遞,另外它還能滿足當(dāng)所需數(shù)據(jù)來(lái)自于多個(gè)數(shù)據(jù)源(如多個(gè)數(shù)據(jù)庫(kù)或文件),而又必須建立相互之間關(guān)聯(lián)關(guān)系的需要。DataSet對(duì)象同時(shí)也提供對(duì)獲得數(shù)據(jù)的批量更新功能。但構(gòu)建DataSet對(duì)象時(shí)需要較大的額外開(kāi)銷(xiāo),使它在數(shù)據(jù)訪問(wèn)效率上較DataReader對(duì)象稍遜。值得注意的是,由于每個(gè)DataSet對(duì)象都會(huì)占據(jù)一定量的內(nèi)存,如果設(shè)計(jì)不當(dāng),會(huì)造成DataSet對(duì)象的大量生成,從而耗盡內(nèi)存資源,嚴(yán)重降低性能。
2)DataReader對(duì)象。通過(guò)為數(shù)據(jù)存取提供一個(gè)連續(xù)、只讀的指針(Cursor),DataReader能夠?qū)崿F(xiàn)高效的、僅向前的流式結(jié)果輸出。使用DataReader每次在內(nèi)存中始終只有一行,所以能提高應(yīng)用程序的性能并減少系統(tǒng)開(kāi)銷(xiāo)。由于DataReader對(duì)象提供未緩沖的數(shù)據(jù)流,該數(shù)據(jù)流使過(guò)程邏輯可以有效地按順序處理從數(shù)據(jù)源中返回的結(jié)果。由于數(shù)據(jù)不在內(nèi)存中緩存,所以在檢索大量數(shù)據(jù)時(shí),適合選擇DataReader對(duì)象,但與DataSet相比則缺少了許多靈活性。
4 基于.Net管理信息系統(tǒng)設(shè)計(jì)的安全性分析
在眾多系統(tǒng)中,分析其中存在的安全性問(wèn)題,這些安全性問(wèn)題主要可以歸納:信息竊取,篡改參數(shù),SQL注入式攻擊。針對(duì)中所面臨的系統(tǒng)安全問(wèn)題可采用以下的措施:
1)保護(hù)隱藏域的安全
針對(duì)黑客可以方便地解碼BASE 64數(shù)據(jù),得到-VIEWSTATE提供的詳細(xì)資料,從而達(dá)到竊取用戶資料的目的,我們有以下解決方案:設(shè)置EnableViewStat MAC=\"true\",啟用--VIEWSTATE數(shù)據(jù)加密功能。然后,將machine Key驗(yàn)證類(lèi)型設(shè)置為DES,要求ASP.NET用Triple DES對(duì)稱加密算法加密VIEWSTAT數(shù)據(jù)。
2)使用ASP.NET域驗(yàn)證器
用戶輸入的主要來(lái)源是HTML表單中提交的參數(shù),如果不能?chē)?yán)格驗(yàn)證這些參數(shù)的合法性,就有可能危及服務(wù)器的安全。域驗(yàn)證器是一種讓ASP.NET開(kāi)發(fā)者對(duì)域的值實(shí)施限制的機(jī)制,限制用戶輸入的域值必須匹配特定的表達(dá)式。但是為每個(gè)輸入域引入驗(yàn)證器還不能防范所有通過(guò)修改參數(shù)實(shí)施的攻擊。在執(zhí)行數(shù)值范圍檢查之時(shí),還要指定正確的數(shù)據(jù)類(lèi)型,也就是說(shuō),在使用ASP.NET的范圍檢查控件時(shí),應(yīng)當(dāng)根據(jù)輸入域要求的數(shù)據(jù)類(lèi)型指定適當(dāng)?shù)腡ype屬性,因?yàn)門(mén)ype的默認(rèn)值是String,要確保輸入值確實(shí)是整數(shù),正確的辦法是將Type屬性指定為Integer。
3)防止注入式攻擊
針對(duì)注入式攻擊,可以有如下的解決方案:
第一、調(diào)用存儲(chǔ)過(guò)程來(lái)執(zhí)行所有的查詢,使用Parameters集合。
SQL參數(shù)的傳遞方式將防止攻擊者利用單引號(hào)和連字符實(shí)施攻擊。此外,它還使得數(shù)據(jù)庫(kù)權(quán)限可以限制到只允許特定的存儲(chǔ)過(guò)程執(zhí)行,所有的用戶輸入必須遵循被調(diào)用的存儲(chǔ)過(guò)程的安全上下文,這樣就很難再發(fā)生注入式攻擊。如果使用了Parameters集合,則不管惡意用戶輸入了什么字符,所輸入的內(nèi)容都將作為文本進(jìn)行處理;還可以實(shí)施類(lèi)型檢查和長(zhǎng)度檢查,超出范圍的字符值將觸發(fā)異常。
第二、對(duì)于動(dòng)態(tài)構(gòu)造SQL查詢的場(chǎng)合,可以使用:替換單引號(hào),防止攻擊者修改SQL命令的含義;刪除用戶輸入內(nèi)容中的所有連字符,防止攻擊者構(gòu)造出類(lèi)如“select*from Users where lo-gin=\"mas\"and password=\"\"之類(lèi)的查詢;對(duì)于用來(lái)執(zhí)行查詢的數(shù)據(jù)庫(kù)賬戶,限制其權(quán)限。
5 總結(jié)
基于.NET的信息管理系統(tǒng)設(shè)計(jì),是目前應(yīng)用比較廣泛的。基于.NET的結(jié)構(gòu)清晰,各層獨(dú)立性強(qiáng),數(shù)據(jù)訪問(wèn)簡(jiǎn)單,而且有很強(qiáng)的安全性保障。不僅能規(guī)范整個(gè)系統(tǒng)的分析設(shè)計(jì)過(guò)程,提高分析設(shè)計(jì)的效率,還將對(duì)系統(tǒng)后期的維護(hù)和再加工提供依據(jù),為系統(tǒng)具有良好的性能奠定了雄厚的基礎(chǔ)。給整個(gè)系統(tǒng)的設(shè)計(jì),開(kāi)發(fā)和維護(hù)都帶來(lái)很大的益處。
參考文獻(xiàn):
[1] 薛華成.管理信息系統(tǒng)[M].北京:清華大學(xué)出版社,2006:4-6.
[2] 唐偉.基于.NET的管理信息系統(tǒng)設(shè)計(jì)及開(kāi)發(fā)技術(shù)研究[D].南京:東南大學(xué),2005.
[3] 郭劍毅,申立中.基于C/S與B/S高校科研管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2003(l):212-214.
[4] 賴步英,徐瑋.基于.NET的高校圖書(shū)館借閱系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2004(19):213-216.
[5] 鄭中佩,孟凡榮.基于AsP.NET技術(shù)的企業(yè)辦公自動(dòng)化系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)與信息技術(shù),2007(7).