李愛軍
(蘇州職業大學計算機工程系 蘇州 215104)
隨著互聯網技術的日益普及和各行各業基于網絡的信息化的快速發展,網絡的安全性問題因其特殊的重要性成為當前研究的熱點話題之一。網絡信息系統用戶多,功能復雜,一般采用基于角色權限的訪問控制模型,而ASP.NET技術從驗證(認證)、授權和扮演(模擬)3個層次上為網絡提供了良好的安全機制。
項目管理系統為企業提供了功能強大的項目管理平臺,旨在幫助企業成功完成所進行的所有項目。但是跟其他網站一樣,面臨著一個重要的安全問題。保證項目管理平臺的安全是項目管理系統正常運營的重要前提。
項目管理系統的安全威脅主要來自于以下幾個方面。
由于項目管理系統是一個大型事務處理系統,其采用的數據庫系統應當穩定、安全地運行。所以應當防止系統崩潰(包括OS和DBMS)和重新啟動,避免內存的數據丟失而使數據庫中的數據的完整性遭到破壞。
因為使用系統的用戶很多,每個用戶所完成的工作是不一樣的,即分配給每個用戶的權限是不同的,某些用戶就有可能以合法身份進行非授權操作。
這主要表現在以下幾個方面:
■系統是一個多用戶系統,所以就難免存在攻擊者利用某個合法用戶的身份登錄系統進行“假冒攻擊”。
■攻擊者為了騙取某合法用戶的身份和登錄密碼,可能會采取“主頁”欺騙。
■系統中所有數據的處理都是通過網絡實現的,如何保證信息的接收(發送)者不能否認曾經接收(發送)過某信息也是系統面臨的一個安全問題。
RBAC(Role-Base Access Control),在系統的應用層安全控制中起非常重要的作用。RBAC的核心思想就是將訪問權限與角色相聯系,通過給用戶分配適合的角色,從而使用戶與訪問權限相聯系。角色是根據企業內為完成各種不同的任務需要設置的特定的任務范疇,系統根據用戶在企業中的職責和責任來設定他們的角色。用戶可以在角色間進行轉換。
(1)驗證(Authentication)
驗證是對請求信息的用戶進行身份識別。ASP.NET身份列表中的驗證是通過驗證提供程序來實現,其中包含對來自客戶的請求進行驗證的代碼模塊。
ASP.NET提供了ASP.NET自身和ASP.NET+IIS兩大類驗證實現形式。它不僅支持微軟的Passport驗證服務,還單方面提供簽到服務和用戶描述服務;而且還提供了cookies幫助建立一種基于用戶Forms的驗證方式。通過cookies用戶的應用程序可以用自己的代碼和邏輯實現用戶定義的可信性驗證。ASP.NET提供了三種認證用戶的方法,每一種都是通過一個獨立的認證提供程序實現的Windows,Forms和Passport。接下來將介紹這些認證方法。
①Windows認證
請求ASP.NET時,客戶首先遇到的是微軟的WEB服務器IIS。此時IIS將對用戶進行認證,或將該工作交給服ASP.NET應用程序;當IIS處理認證工作時,它可以直接與操作系統通信,對用戶的證件進驗證。
②表單認證
在ASP.NET中,可以選擇由ASP.NET應用程序(而不是IIS)通過表單進行認證,這讓用戶對站點的認證方案有更大的控制權,可以將用戶的證件存儲在一個數據庫或XML文件中,而不是Windows系統中。
③Passport認證
Passport認證是微軟公司提供的一種集中式認證服務。其工作原理與表單認證非常相似,只是無須創建任何自定義的功能。這兩種方法都在客戶端創建認證cookie。使用Passport認證時,用戶將被重定向到Passport登錄頁面,讓用戶填寫表單,該表單將通過微軟的Passport服務來檢查用戶的證件,以確定用戶是否合法。然后像表單認證一樣設置一個認證cookie。Passport認證服務并不創建認證cookie,這項工作是由原來的Web服務器來完成的。
(2)授權(Authorization)
授權是安全系統提供的又一項重要功能,旨在確定通過驗證的用戶可訪問哪些資源。ASP.NET提供了兩種授權方式即基于ACL資源權限的授權方式和URL授權。
(3)扮演(Impersonation)
扮演能夠讓ASP.NET通過運行客戶程序的用戶身份來執行頁面。如果用戶以某一身份通過授權,那么ASP.NET將會根據該用戶的權限來限制或拒絕其對資源的訪問。
(4)安全通信(Secure Communication)
許多應用程序跨網絡在終端用戶和中間的應用程序節點之間,來回傳遞機密數據。機密數據可能包括用于身份驗證的憑據,或者是諸如信用卡號碼或銀行事務處理細節等數據。為防止出現不希望發生的信息泄露以及保護數據在傳輸過程中不被非法修改,對通信端點之間的信道必須加以保護。
本系統通過SQLServer 2000數據庫管理系統提供的安全賬戶認證控制用戶對服務器的連接,使用數據庫用戶和角色等限制用戶對數據庫的訪問。項目管理系統創建了不同用戶賬戶、角色以及分別授予不同的權限。
系統基于Windows2000 Server操作系統,采用ASP.NET實現Web服務器與數據庫的連接,后臺數據庫為SQL sever2000系統,以.net為系統開發平臺,系統采用B/S的三層架構。系統利用ASP.NET部署B/S的三層架構,三層是由表示層、業務層、數據層組成。表示層就是利用瀏覽器為客戶提用服務的圖形界面,負責直接跟用戶進行交互;業務層位于表示層和數據層之間,由應用服務器和Web服務器實現系統業務邏輯功能;數據層是三層中的最底層,負責數據的存儲和訪問。每層的功能非常清晰,層與層之間不能跨越,客戶端不直接與數據庫進行交互,而是通過COM/DCOM通訊與業務層建立連接,業務層經過ADO.NET實現對數據層的數據進行訪問,實現了顯示、數據、邏輯的分開,減少了耦合度,更加靈活,適于維護。
ASP.NET在網頁中使用基于事件的處理,表示層的頁面代碼和后臺的代碼分離,系統采用C#作為后臺代碼的語言。.NET中可以方便地實現組件的裝配,后臺代碼通過命名控件可以方便地使用自己定義的組件。表示層放在ASP.NET頁面中,數據庫操作和業務邏輯用組件來實現,這樣就很方便地實現了三層架構。這樣的結構減少了入口點,減少了由于客戶端被破壞而給數據庫帶來損失的風險,保證了系統的安全。
針對項目管理系統業務流程,為保證在整個項目管理過程中信息的完整性和保密性,系統設計時必須采取如下的安全措施。
項目管理系統采用的是由ASP.NET應用程序通過表單進行身份認證。通過這種方法,用戶被引導到系統所提供的一個登陸表單,通過該表單,用戶可以提供其證件,如果被認可,則可以繼續進行管理工作,否則活動被取消,頁面將重新定位到用戶登陸界面。圖1說明了本系統中采用的表單認證過程。

圖1 表單認證過程
整個過程的步驟如下:
1、戶向站點請求被保護的頁面。
2、如果請求沒有包含有效的認證Cookie,Web服務器將把用戶重定向到web.config文件中Authentication標簽的login-URL屬性中指定的URL,該URL包含一個供用戶登陸的表單。
3、當用戶輸入用戶名密碼后,表單將數據提交。
4、如果輸入有效,則ASP.NET將在客戶機上創建一個認證cookie。
這樣,用戶就能夠被重新定向到最初請求的頁面繼續進行管理工作等。以下是代碼片段:

系統利用表單認證具有靈活和強大的特性,系統擴充時所有新增的頁面代碼都會受到保護,不必為每個文件增加保護代碼。而且認證的過程完全可以由系統定制,可以任意加入認證策略。通過上述的安全性設計,確保項目管理系統更穩定、安全、柔性更好。
項目管理系統如果統一采用Internet進行連接,由于現有的網絡系統有相當多的安全漏洞,計算機操作系統的安全防護也十分脆弱,系統將承受巨大的安全風險。網絡黑客可能會滲入系統,盜竊數據或惡意破壞記錄。項目管理系統內部使用者也可能會有意或無意地將數據泄露出去。所以,本系統使用內外網相結合的架構,項目管理系統內部的運作在局域網中進行,外部的宣傳和服務在Internet網中進行。
在該系統中,對于項目組的一每個用戶設置了不同的系統角色。系統根據不同的項目組中不同角色的人設置不同的權限。項目管理員具有最高權限、其他用戶的權限由項目管理設定,并可動態修改,以適應項目管理的需要。
在項目管理系統內部,系統的管理員對項目管理系統內部人員根據他們身份的不同賦予不同的角色,針對不同的角色,賦予他們不同的權限。由于整個系統被分為不同的功能模塊,所以一個權限就代表著對某個模塊或者某個模塊的一部分的可操作性。因此每個用戶根據他們角色,具有對應模塊的操作權限,不允許操作非授權的模塊。通過這種授權訪問的方式保證了項目管理系統不會被非法訪問和越權操作。圖2為系統角色管理。

圖2 系統角色管理
總之,系統為管理員提供了一個功能全面的管理平臺,管理員能夠方便地對角色、權限等進行管理,信息更新、維護等工作則全部由系統的普通用戶完成。通過系統和項目權限管理,可以同時保證系統的安全性和數據的安全性,使得具有不同權限的用戶只能使用相應的系統功能、瀏覽或維護相應的數據。
系統為管理員提供了一個功能全面的管理平臺,管理員能夠方便地對角色、權限等進行管理,信息更新、維護等工作則全部由系統的普通用戶完成。通過系統和項目權限管理,可以同時保證系統的安全性和數據的安全性,使得具有不同權限的用戶只能使用相應的系統功能、瀏覽或維護相應的數據。本文對系統的安全性進行了需求分析后,詳細介紹了兩種安全技術:基干角色權限的訪問控制和ASP.NET的安全技術。并把這兩種安全技術在本系統的應用進行了具體實現。
本文對采用基于ASP.NET構建的B/S結構的項目管理系統的安全模式設計進行了研究,這種基于W eb的應用系統的安全體系設計相對于傳統的C/S模式.既要考慮數據訪問的安全,又要考慮網絡的安全。Web開發平臺ASP.NET的安全訪問機制使得Web的安全性和可靠性得到了基本的保障。采用B/S的三層架構,將顯示層、中間層、數據層在邏輯上相互獨立,減少了禍合度,保證了系統的安全。采用了身份驗證、權限控制訪問數據庫等多種安全策略保證了數據的安全。限制了網絡的入侵,最終保障了網絡系統的安全。
[1]林海燕.項目管理在軟件開發項目中的應用[J].《計算機系統應用》2003.9,P77~P79.
[2]蓋江南,王勇,閻文麗等編著.ASP.NET+SQLSERVER動態網站設計寶典[M].北京:電子工業出版社.2006.
[3]李成楷,詹永照,茅兵.基于角色的系統訪問控制[J].軟件學報,2002,11(7):P 931-P 935.
[4]David Ferraiolo,RaviSandhu,Serban Gavrlia.Propose NIST Standard forRole-Based
Access Control.ACM Transactions on Information and System Security,2001,(4):224-227.
[5]李霞.基于_NET的研究生教學管理系統的設計與實現[D].碩士學位論文,中國地質大學,2006.24-25