1 引言
Web應用程序是當今多數企業應用的前沿陣地。Web應用程序在一個復雜的混合性架構中可以發揮多種不同的功能。其涉及范圍極廣,從在最新的云技術上運行的面向服務的方案,到較老的多層Web應用程序,再到準許客戶訪問大型主機上老應用程序的Web入口,都有其應用。管理與這些復雜的Web應用程序相關的風險是公司的必然要求,而且運行這些Web應用程序的底層代碼的安全性直接影響到公司應用程序可用數據的風險態勢。不幸的是,開發可重復的高效Web應用程序的安全實踐并非一項簡單任務。許多單位試圖運用后生產(poST-production)解決方案來提供安全控制,如Web應用防火墻和入侵防御系統等。
2 口令驗證
Web安全處理的第一步便是驗證,即對于請求信息的用戶驗證其身份。用戶使用證件表明其身份。最常用的就是用戶名和密碼。在驗證用戶身份時,若系統不能根據用戶的證件確定其身份,則身份驗證失敗,用戶將被拒絕訪問;若證件有效,則允許用戶進入系統,并被賦予一個合法的已知身份。
口令驗證是根據用戶知道什么進行驗證的一個例子,是目前最廣泛的身份驗證方法,雖然其安全性比其他幾種方法差,但簡單易行,如果使用恰當,可以提供一定程度的安全保證。防止口令泄漏是這一方法中的關鍵問題。
口令一般是由字母、數字和特殊字符等組成的字符串,其選擇原則:①用戶容易記憶;②難于被別人猜中或發現;③抗分析能力強;④限制使用期限,可經常更換。
目前主要有2種口令生成方法:①由用戶自己選擇口令。②由系統自動生成隨機的口令。前者優點是用戶很容易記住它,一般不會忘記。因為所選的口令往往與用戶的某些特征有關,如生日、配偶名、電話號碼等,正因為這樣,口令很容易被猜出來,泄漏的機會較大。較好的方法是設計一個口令生成器,隨機地為用戶生成口令。這種方法帶來的困難是用戶記憶非常困難,即使這個字符串不長,要讓一個人記住它也不是一件容易的事。口令的管理很麻煩,用戶的口令要嚴格保密,不能被其他用戶得到。口令更不能以明文的形式存放在系統中,這樣口令很容易泄漏。因此,必須使用數據加密的方法將口令以密文的形式存放在系統中。
ASP.NET 的事件模型是由以及數個 Hidden Field 組合而成,基于 HTTP 模型的限制,所有的網頁程序在運行結果輸出到用戶端后,程序就會退出運行,為了維護在 ASP.NET 網頁與控件的狀態數據,因此在輸出 ASP.NET 控件時,ASP.NET 會將部份狀態數據儲存到網頁的 Hidden Field 中,這類型的狀態數據稱為 ViewState(ID 為 __VIEWSTATE),在服務器端即會被解譯出狀態與事件數據。3種驗證模式分別為Windows、Forms和Passport.Windows驗證是通過I2S實現:Forms驗證是在開發人員自己的服務器上實現:而Passport驗證則是通過微軟公司的訂閱服務實現。
2.1 Windows驗證
ASP是一項微軟公司的技術,是一種使嵌入網頁中的腳本可由因特網服務器執行的服務器端腳本技術。指ActiveServerPages(動態服務器頁面),運行于IIS之中的程序。ASP.net構架是可以用Microsoft(R)公司最新的產品VisualStudio.net開發環境進行開發,WYSIWYG(WhatYouSeeIsWhatYouGet所見即為所得)的編輯。這些僅是ASP.net強大化軟件支持的一小部分。
當用戶請求ASP.NET頁面時,請求信息首先遇到的是Web服務中的Internet信息服務。Internet信息服務首先驗證用戶身份,或者將驗證工作交給ASP.NET應用程序。這種Windows身份驗證過程如圖l所示。
2.1. l 基本身份驗證
除了根本不進行驗證外,基本身份驗證是一種最簡單的驗證方式,也是一種收集用戶證件的行業標準方法。
基本身份驗證的步驟:①客戶向服務器請求被限制的資源;②Web服務器以"401 unauthoried"進行響應;③客戶端瀏覽器接收到這條信息后,要求用戶輸入用戶名和密碼來進行驗證;④如果驗證失敗,用戶證件無效,則會返回"2",重新以"401 Unauthoried"響應;⑤如果驗證成功,客戶瀏覽器便通過身份驗證,可以訪問請求資源。
2.1.2 Windows域服務器的摘要式驗證
域名服務器的全稱是Domain Name Server,一種程序,它保存了一張域名(domain name)和與之相對應的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一臺計算機或計算機組的名稱,用于在數據傳輸時標識計算機的電子方位(有時也指地理位置)。域名是由一串用點分隔的名字組成的,通常包含組織名,而且始終包括兩到三個字母的后綴,以指明組織的類型或該域所在的國家或地區。
摘要式身份驗證,提供了與基本身份驗證同一樣的功能,在通過網絡往服務器傳送用戶證件信息時提高了安全性。摘要式驗證會使用MD5哈希算法加密來處理用戶證件資料。由于此項處理是單向,就算有人從網絡上將它們截取下來,也無法解譯成原來的用戶名與密碼,從而保證服務器資源的安全性。
2.1.3 集成Windows身份驗證
Windows標志windows中文是窗戶的意思。另外還有微軟公司推出的視窗電腦操作系統名為windows.隨著電腦硬件和軟件系統的不斷升級,微軟的windows操作系統也在不斷升級,從16位、32位到64位操作系統。從最初的windows1.0到大家熟知的windows95、NT、97、98、2000、Me、XP、Server、Vista,Windows 7各種版本的持續更新,微軟一直在盡力于Windows操作的開發和完善。
集成Windows身份驗證時,將不會要求用戶輸入證件。相反,當瀏覽器連接到服務器后,即將加密后的、用戶登錄計算機時使用的信息發送給服務器。服務器檢查這些信息,以確定用戶是否有權訪問。
2.2 窗體驗證
窗體驗證,即驗證用戶證件資料。在ASP.NET中,可以選擇由ASP.NET應用程序通過窗體驗證進行身份驗證,而不是通過I2S.窗體驗證是ASP.NET驗證服務,它能夠讓應用程序擁有自己的登錄界面。當用戶試圖訪問被限制的資源時,便會被重定向至登錄界面,而不是彈出登錄對話框。在登錄頁面中,可以自行編寫代碼驗證用戶的證件資料。
安全處理流程如圖2所示。
在登錄界面中提交按鈕的Click事件處理程序中,可檢查用戶輸入的證件資料,從而判斷證書資料是否正確,也就是身份驗證的過程。根據證件資料不同的存放位置,可以將驗證方式劃分為以下3種。
(1)在代碼中直接驗證設計人員可以直接在代碼中將用戶輸入的證件資料一一對比,從而判斷用戶證件資料是否正確。
(2)利用數據庫實現驗證在代碼中直接對比用戶的證件資料,不僅麻煩而且代碼也難以維護。當用戶很多時,驗證會顯得十分麻煩。這時,可將用戶列表信息先存儲在數據庫里,然后在login_btn_Click()方法中編寫代碼從數據庫取出用戶資料,再逐一對比,如果有相符者,則通過驗證。
(3)利用配置文件實現驗證在配置文件中,使用子元素的項定義用戶名和密碼,即將正確的用戶證件資料存儲在配置文件中。當用戶登錄時單擊"登錄"按鈕,可以在其Click事件處理程序中調用FormsAuthentication,Authenticate()方法,系統便會自動地將用戶所輸入的信息與項中的用戶名與密碼相比較,如果相符,則可通過驗證。
2.3 Passoort驗證
Passport驗證是微軟公司提供的一種驗證服務,其工作原理與窗體驗證類似,只是無需創建任何自定義的功能。這兩種方法都是在客戶端創建Cookie,用于授權。使用Passport驗證時,用戶將被重定向至Passport登錄網頁,該頁面提供了一個非常簡單的窗體讓用戶填寫用戶驗證資料,窗體將通過Passport服務來檢查用戶的證件,以確定用戶的身份是否有效。如果用戶證件通過了驗證,則為它在客戶端計算機上建立一個驗證Cookie.
建立Passport驗證的關鍵一步是正確地設置Web.config文件,使用代碼如下所示:
3 授權
用戶通過驗證,并且取得自己的身份后,就必須檢查其是否擁有訪問所請求資源的權限,此過程便稱為"授權".例如,在機密的政府機構中,如果有人想進入某些房間,則首先必須檢查其是否擁有進入該房間的權限。
在Windows系統中,大部分的文件都會擁有一個訪問控制列表。不僅會列出有哪些用戶或者用戶組訪問該資源,而且詳細地指出了每個用戶或者用戶組所能夠運行的訪問類型一能否讀取、寫入、修改和刪除等。
在ASP.NET中,授權方式主要有2種,它可以依賴Windows指出通過驗證的用戶可訪問哪些資源,稱之為文件授權;也可依賴被請求資源的URL,被稱為URL授權。下面的這段代碼可實現對多個目錄的權限控制:
URL授權由UrlAuthorizationModule HTTP模塊控制,該模塊的行為由存儲于web.config文件的中的設置驅動。在URL授權的最后階段,需要指出的是,只有ASP.NET資源受到監控。通常,基于URL的授權很少與Windows身份驗證一起使用,URL授權對于Forms身份驗證則更有效。
4 模擬
ASP.NET的另一項重要安全功能便是用戶賬戶模擬。默認狀態下,ASP.NET不啟用模擬,而是執行所有的代碼,應用程序可訪問所有的文件與文件夾,這時必須采用其他的安全措施控制訪問權限。
圖3詳細說明了用戶為獲得安全資源的訪問權限需要經歷的過程。
使用模擬功能,ASP.NET能夠以訪問應用程序的用戶身份來執行頁面。即若用戶以"Winters"身份來訪問資源,則ASP.NET將把自己模擬成"Winters"來使用服務器上的各項資源,并根據該用戶的權限限制或者允許ASP.NET訪問某些資源,從而實現數據的安全性。模擬用戶的流程圖如圖4所示。
ASP.NET應用程序是系統資源的用戶,需要訪問文件、內存等,因此在默認狀態下,ASP.NET應用程序進程有非常大的權限,幾乎可訪問系統提供的任何資源。但有時可能根據需要通過使用ASP.NET應用程序的用戶身份來限制對資源的使用,這便要運用模擬功能,讓ASP.NET模擬用戶身份運行程序。
5 結語
綜上所述,是通過開發《圖片管理系統》中對ASP.NET安全性的探討。文章中的例子包括程序代碼段都是在開發過程中應用的、經過驗證的、也是運行通過的。有關于ASP.NET安全性問題有待于繼續探討。
-
微軟
+關注
關注
4文章
6600瀏覽量
104121 -
服務器
+關注
關注
12文章
9203瀏覽量
85528 -
WINDOWS
+關注
關注
4文章
3551瀏覽量
88801
發布評論請先 登錄
相關推薦
評論