《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于ASP.NET的Web應(yīng)用程序安全性的探討
基于ASP.NET的Web應(yīng)用程序安全性的探討
摘要: 目前,雖然網(wǎng)站的絕大部分資源對(duì)瀏覽者是開放的.但是有些信息則是特別針對(duì)某些用戶的,例如政府網(wǎng),、企業(yè)內(nèi)部網(wǎng)等,只有特定的用戶才能訪問,。需要使用嚴(yán)密的安全機(jī)制來(lái)保護(hù),以確定用戶訪問資源的權(quán)限,。Web安全性便是為限制只有特定用戶群才能訪問某些文件而設(shè)計(jì),。
關(guān)鍵詞: NGN|4G Web ASP.NET
Abstract:
Key words :

1 引言

目前,雖然網(wǎng)站的絕大部分資源對(duì)瀏覽者是開放的.但是有些信息則是特別針對(duì)某些用戶的,,例如政府網(wǎng),、企業(yè)內(nèi)部網(wǎng)等,只有特定的用戶才能訪問,。需要使用嚴(yán)密的安全機(jī)制來(lái)保護(hù),,以確定用戶訪問資源的權(quán)限。Web安全性便是為限制只有特定用戶群才能訪問某些文件而設(shè)計(jì),。

正確識(shí)別用戶身份,,嚴(yán)密控制用戶對(duì)資源的訪問,是Web應(yīng)用程序安全性中最重要問題,,也是最基本的一環(huán),。實(shí)現(xiàn)安全操作,必須經(jīng)過驗(yàn)證,、授權(quán)和模擬等處理程序完成,。

2 口令驗(yàn)證

Web安全處理的第一步便是驗(yàn)證,即對(duì)于請(qǐng)求信息的用戶驗(yàn)證其身份,。用戶使用證件表明其身份.最常用的就是用戶名和密碼,。在驗(yàn)證用戶身份時(shí),若系統(tǒng)不能根據(jù)用戶的證件確定其身份,,則身份驗(yàn)證失敗,,用戶將被拒絕訪問,;若證件有效,,則允許用戶進(jìn)入系統(tǒng),并被賦予一個(gè)合法的已知身份,。

口令驗(yàn)證是根據(jù)用戶知道什么進(jìn)行驗(yàn)證的一個(gè)例子,,是目前最廣泛的身份驗(yàn)證方法,雖然其安全性比其他幾種方法差,,但簡(jiǎn)單易行,,如果使用恰當(dāng),可以提供一定程度的安全保證。防止口令泄漏是這一方法中的關(guān)鍵問題,。

口令一般是由字母,、數(shù)字和特殊字符等組成的字符串,其選擇原則:①用戶容易記憶,;②難于被別人猜中或發(fā)現(xiàn),;③抗分析能力強(qiáng);④限制使用期限,,可經(jīng)常更換,。

目前主要有2種口令生成方法:①由用戶自己選擇口令。②由系統(tǒng)自動(dòng)生成隨機(jī)的口令,。前者優(yōu)點(diǎn)是用戶很容易記住它,,一般不會(huì)忘記.因?yàn)樗x的口令往往與用戶的某些特征有關(guān),如生日,、配偶名,、電話號(hào)碼等,正因?yàn)檫@樣,,口令很容易被猜出來(lái),,泄漏的機(jī)會(huì)較大。較好的方法是設(shè)計(jì)一個(gè)口令生成器,,隨機(jī)地為用戶生成口令,。這種方法帶來(lái)的困難是用戶記憶非常困難,即使這個(gè)字符串不長(zhǎng),,要讓一個(gè)人記住它也不是一件容易的事,。口令的管理很麻煩,,用戶的口令要嚴(yán)格保密,,不能被其他用戶得到??诹罡荒芤悦魑牡男问酱娣旁谙到y(tǒng)中,,這樣口令很容易泄漏。因此,,必須使用數(shù)據(jù)加密的方法將口令以密文的形式存放在系統(tǒng)中,。

ASP.NET" title="ASP.NET">ASP.NET提供了3種驗(yàn)證用戶的模式,每一種驗(yàn)證模式都是通過一個(gè)獨(dú)立的驗(yàn)證程序?qū)崿F(xiàn),。3種驗(yàn)證模式分別為Windows,、Forms和Passport。Windows驗(yàn)證是通過I2S實(shí)現(xiàn):Forms驗(yàn)證是在開發(fā)人員自己的服務(wù)器上實(shí)現(xiàn):而Passport驗(yàn)證則是通過微軟公司的訂閱服務(wù)實(shí)現(xiàn),。

2.1 Windows驗(yàn)證

當(dāng)用戶請(qǐng)求ASP.NET頁(yè)面時(shí),,請(qǐng)求信息首先遇到的是Web服務(wù)中的Internet信息服務(wù),。Internet信息服務(wù)首先驗(yàn)證用戶身份,或者將驗(yàn)證工作交給ASP.NET應(yīng)用程序,。這種Windows身份驗(yàn)證過程如圖l所示,。

2.1. l 基本身份驗(yàn)證

除了根本不進(jìn)行驗(yàn)證外,基本身份驗(yàn)證是一種最簡(jiǎn)單的驗(yàn)證方式,,也是一種收集用戶證件的行業(yè)標(biāo)準(zhǔn)方法,。

基本身份驗(yàn)證的步驟:①客戶向服務(wù)器請(qǐng)求被限制的資源;②Web服務(wù)器以“401 unauthoried”進(jìn)行響應(yīng),;③客戶端瀏覽器接收到這條信息后,,要求用戶輸入用戶名和密碼來(lái)進(jìn)行驗(yàn)證;④如果驗(yàn)證失敗,,用戶證件無(wú)效,,則會(huì)返回“2”,重新以“401 Unauthoried”響應(yīng),;⑤如果驗(yàn)證成功,,客戶瀏覽器便通過身份驗(yàn)證,可以訪問請(qǐng)求資源,。

2.1.2 Windows域服務(wù)器的摘要式驗(yàn)證

摘要式身份驗(yàn)證,,提供了與基本身份驗(yàn)證同一樣的功能,在通過網(wǎng)絡(luò)往服務(wù)器傳送用戶證件信息時(shí)提高了安全性,。摘要式驗(yàn)證會(huì)使用MD5哈希算法加密來(lái)處理用戶證件資料,。由于此項(xiàng)處理是單向,就算有人從網(wǎng)絡(luò)上將它們截取下來(lái),,也無(wú)法解譯成原來(lái)的用戶名與密碼,,從而保證服務(wù)器資源的安全性。

2.1.3 集成Windows身份驗(yàn)證

集成Windows身份驗(yàn)證時(shí),,將不會(huì)要求用戶輸入證件,。相反,當(dāng)瀏覽器連接到服務(wù)器后,,即將加密后的,、用戶登錄計(jì)算機(jī)時(shí)使用的信息發(fā)送給服務(wù)器。服務(wù)器檢查這些信息,,以確定用戶是否有權(quán)訪問,。

2.2 窗體驗(yàn)證

窗體驗(yàn)證,即驗(yàn)證用戶證件資料,。在ASP.NET中,,可以選擇由ASP.NET應(yīng)用程序通過窗體驗(yàn)證進(jìn)行身份驗(yàn)證,而不是通過I2S,。窗體驗(yàn)證是ASP.NET驗(yàn)證服務(wù),,它能夠讓應(yīng)用程序擁有自己的登錄界面。當(dāng)用戶試圖訪問被限制的資源時(shí),,便會(huì)被重定向至登錄界面,,而不是彈出登錄對(duì)話框。在登錄頁(yè)面中,,可以自行編寫代碼驗(yàn)證用戶的證件資料,。

安全處理流程如圖2所示。
 

在登錄界面中提交按鈕的Click事件處理程序中,,可檢查用戶輸入的證件資料,,從而判斷證書資料是否正確,也就是身份驗(yàn)證的過程,。根據(jù)證件資料不同的存放位置,,可以將驗(yàn)證方式劃分為以下3種。

(1)在代碼中直接驗(yàn)證設(shè)計(jì)人員可以直接在代碼中將用戶輸入的證件資料一一對(duì)比,,從而判斷用戶證件資料是否正確,。

(2)利用數(shù)據(jù)庫(kù)實(shí)現(xiàn)驗(yàn)證在代碼中直接對(duì)比用戶的證件資料,不僅麻煩而且代碼也難以維護(hù),。當(dāng)用戶很多時(shí),,驗(yàn)證會(huì)顯得十分麻煩。這時(shí),,可將用戶列表信息先存儲(chǔ)在數(shù)據(jù)庫(kù)里,,然后在login_btn_Click()方法中編寫代碼從數(shù)據(jù)庫(kù)取出用戶資料,再逐一對(duì)比,,如果有相符者,,則通過驗(yàn)證。

(3)利用配置文件實(shí)現(xiàn)驗(yàn)證在配置文件中,,使用子元素的項(xiàng)定義用戶名和密碼,,即將正確的用戶證件資料存儲(chǔ)在配置文件中。當(dāng)用戶登錄時(shí)單擊“登錄”按鈕,,可以在其Click事件處理程序中調(diào)用FormsAuthentication,,Authenticate()方法,系統(tǒng)便會(huì)自動(dòng)地將用戶所輸入的信息與項(xiàng)中的用戶名與密碼相比較,,如果相符,,則可通過驗(yàn)證。

2.3 Passoort驗(yàn)證

Passport驗(yàn)證是微軟公司提供的一種驗(yàn)證服務(wù),,其工作原理與窗體驗(yàn)證類似,,只是無(wú)需創(chuàng)建任何自定義的功能。這兩種方法都是在客戶端創(chuàng)建Cookie,,用于授權(quán),。使用Passport驗(yàn)證時(shí),,用戶將被重定向至Passport登錄網(wǎng)頁(yè),該頁(yè)面提供了一個(gè)非常簡(jiǎn)單的窗體讓用戶填寫用戶驗(yàn)證資料,,窗體將通過Passport服務(wù)來(lái)檢查用戶的證件,,以確定用戶的身份是否有效。如果用戶證件通過了驗(yàn)證,,則為它在客戶端計(jì)算機(jī)上建立一個(gè)驗(yàn)證Cookie,。

建立Passport驗(yàn)證的關(guān)鍵一步是正確地設(shè)置Web.config文件,使用代碼如下所示:

3 授權(quán)

用戶通過驗(yàn)證,,并且取得自己的身份后,,就必須檢查其是否擁有訪問所請(qǐng)求資源的權(quán)限,此過程便稱為“授權(quán)”,。例如,,在機(jī)密的政府機(jī)構(gòu)中,如果有人想進(jìn)入某些房間,,則首先必須檢查其是否擁有進(jìn)入該房間的權(quán)限,。

在Windows系統(tǒng)中,大部分的文件都會(huì)擁有一個(gè)訪問控制列表,。不僅會(huì)列出有哪些用戶或者用戶組訪問該資源,,而且詳細(xì)地指出了每個(gè)用戶或者用戶組所能夠運(yùn)行的訪問類型一能否讀取、寫入,、修改和刪除等,。

《圖片管理系統(tǒng)》中的權(quán)限聲明:12級(jí)的用戶指超級(jí)管理員,即可以執(zhí)行所有操作,;11級(jí)的用戶擁有修改圖片權(quán)限:10級(jí)的用戶只有瀏覽圖片的權(quán)限,。

在ASP.NET中,授權(quán)方式主要有2種,,它可以依賴Windows指出通過驗(yàn)證的用戶可訪問哪些資源,,稱之為文件授權(quán);也可依賴被請(qǐng)求資源的URL,,被稱為URL授權(quán),。下面的這段代碼可實(shí)現(xiàn)對(duì)多個(gè)目錄的權(quán)限控制:

URL授權(quán)由UrlAuthorizationModule HTTP模塊控制,該模塊的行為由存儲(chǔ)于web.config文件的中的設(shè)置驅(qū)動(dòng),。在URL授權(quán)的最后階段,,需要指出的是,只有ASP.NET資源受到監(jiān)控,。通常,,基于URL的授權(quán)很少與Windows身份驗(yàn)證一起使用,URL授權(quán)對(duì)于Forms身份驗(yàn)證則更有效,。

4 模擬

ASP.NET的另一項(xiàng)重要安全功能便是用戶賬戶模擬,。默認(rèn)狀態(tài)下,,ASP.NET不啟用模擬,而是執(zhí)行所有的代碼,,應(yīng)用程序可訪問所有的文件與文件夾,,這時(shí)必須采用其他的安全措施控制訪問權(quán)限,。

圖3詳細(xì)說(shuō)明了用戶為獲得安全資源的訪問權(quán)限需要經(jīng)歷的過程,。

使用模擬功能,ASP.NET能夠以訪問應(yīng)用程序的用戶身份來(lái)執(zhí)行頁(yè)面,。即若用戶以“Winters”身份來(lái)訪問資源,,則ASP.NET將把自己模擬成“Winters”來(lái)使用服務(wù)器上的各項(xiàng)資源,并根據(jù)該用戶的權(quán)限限制或者允許ASP.NET訪問某些資源,,從而實(shí)現(xiàn)數(shù)據(jù)的安全性,。模擬用戶的流程圖如圖4所示。

ASP.NET應(yīng)用程序是系統(tǒng)資源的用戶,,需要訪問文件,、內(nèi)存等,因此在默認(rèn)狀態(tài)下,,ASP.NET應(yīng)用程序進(jìn)程有非常大的權(quán)限,,幾乎可訪問系統(tǒng)提供的任何資源。但有時(shí)可能根據(jù)需要通過使用ASP.NET應(yīng)用程序的用戶身份來(lái)限制對(duì)資源的使用,,這便要運(yùn)用模擬功能,,讓ASP.NET模擬用戶身份運(yùn)行程序。

5 結(jié)語(yǔ)

綜上所述,,是通過開發(fā)《圖片管理系統(tǒng)》中對(duì)ASP.NET安全性的探討,。文章中的例子包括程序代碼段都是在開發(fā)過程中應(yīng)用的、經(jīng)過驗(yàn)證的,、也是運(yùn)行通過的,。有關(guān)于ASP.NET安全性問題有待于繼續(xù)探討。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。