asp.net提供了一個多層的安全模型,這個模型能夠非常容易的保護Web應用程序。
安全策略沒有必要非常復雜,但是需要應用安全策略的地方卻是非常廣泛的。程序員需要保證自己的應用程序不能被騙取,而把私有信息發送出去。
限制訪問的文件類型
ASP.NET自動提供一個基本的安全策略來阻止對特定文件的訪問請求。ASP.NET向IIS注冊這些文件類型,并把它們配置給IIS中的一個類HttpForbiddenHandler,這個類在它的生命周期中只有一個作用,就是拒絕所有向配置到它里面的文件發送請求。
被限制訪問的文件類型如下:
1..asax:全局文件,提供了一些在一個中心位置響應應用程序級或模塊級事件的方法。
2..asc:Web服務文件,提供Web服務。
3..config:配置文件,提供應用程序的配置。
4..cs:源代碼文件,由C#編寫。
5..csPRoj:C#項目文件,控制C#項目的生成。
6..vb:源代碼文件,由VB編寫。
7..vbproj:VB項目文件,控制VB項目的生成。
8..resx:資源文件,主要用于存儲各個版本的資源。
9..resources:受控資源文件,可以存放位圖、子串和自定義數據等資源。
安全概念
安全有三種最基本的概念。
1. 認證(Authentication):這個過程是要確定一個用戶的身份以及迫使用戶證明他們是誰。通常這些Windows用戶賬戶被存儲在一個文件或后端數據庫中。
2. 授權(Authorization):一旦一個用戶通過認證,授權的過程就是確定用戶是否有足夠的權限來執行某一行為。通常,Windows設定授權檢測。
3. 模擬(Impersonation):所有代碼都運行在一個固定的賬戶下,這個賬戶被定義在machine.config文件里。而模擬允許一部分代碼運行在一個不同的身份之下。授權和認證是創建一個安全網站的兩個基石。
安全策略
IIS和ASP.NET的安全設置可以有幾種互動的方式,在實際操作中,程序員可以把以下兩個中心策略添加到ASP.NET安全機制中:
表單認證
ASP.NET支持尖端驗證算法,這種算法使得用戶無法騙取自己的Cookie或試圖欺騙應用程序以使他們進入。
為了實現基于表單的安全,需要按照以下三個步驟進行操作:
1.在Web.config文件里設置認證模型。
2.限制無身份的用戶訪問應用程序中的特定頁或地址。
3.創建一個登錄頁面。
Web.config設置
可以在Web.config文件里使用<authentication>節來定義網站的安全性。
1 <configuaration>2 <system.web>3 <authentication mode=”Forms”>4 <forms name=”myCookies” loginUrl=”../Login.aspx” protection=”All” timeout=”50” path=”/” />5 </authentication>6 </system.web>7 </configuaration>
表單認證的設置屬性:
1.name:設置Cookie的名字,默認值為ASPXAUTH。
2.loginUrl:設置客戶端登錄頁面地址,如果用戶沒有認證就會跳轉到該地址,默認值為Default.aspx
3.protection:設置安全Cookie的加密和驗證類型,類型的值可以是All、None、Encryption或Validation。
4.timeout:設置Cookie失效時間。
5.path:設置Cookie作用的路徑,默認值是“/”。
授權規則
為了控制登錄網站的權限,需要在Web.config文件中的<authorization>節中設置訪問控制的規則。
1 <configuaration>2 <system.web>3 <authorization>4 <allow users=”*” />5 </authorization>6 </system.web>7 </configuaration>
設置限制性規則
為了禁止任何用戶都能訪問應用程序,需要設置一種更具有限制性的規則。
1 <configuaration>2 <system.web>3 <authorization>4 <allow users=”?” />5 </authorization>6 </system.web>7 </configuaration>
控制進入特定的目錄地址
應用程序設計通常把文件放在一個單獨的需要認證的文件目錄中,使用ASP.NET配置文件可以很輕松地完成這些設置。可以在Web.config文件的<authorization>節中進行嚴格的安全目錄設置,這樣應用程序就會簡單地拒絕所有無身份的用戶。
1 <configuaration>2 <system.web>3 <authorization>4 <deny users=”?” />5 </authorization>6 </system.web>7 </configuaration>
限制特定的用戶
使用<allow>節可以設置允許訪問應用程序的用戶列表,而使用<deny>節可以設置拒絕訪問應用程序的用戶列表。
1 <authorization>2 <deny users=”?”/>3 <deny users=”admi,shine”/>4 <deny users=”light”/>5 <allow users=”*”>6 </authorization>
控制進入特定的文件
通常,通過目錄設置文件訪問權限是最簡潔和最容易的方式,然而,程序員也可以使用<location>標記來限制特定文件的訪問。
1 <configuration> 2 <system.web> 3 <authorization> 4 <allow users=”*” /> 5 </ authorization > 6 </system.web > 7 <location path=”Page1.aspx”> 8 <system.web> 9 <authorization>10 <deny users=”?”>11 </authorization >12 </system.web>13 </location>14 </configuration>
Windows認證
采用Windows認證,IIS將要掌管認證過程,如果虛擬目錄采用默認的設置,用戶就會被授權在無身份的IUSER_[ServerName]賬戶之下,但是當使用Windows認證時,必須強迫用戶在他們被允許進入網站的安全內容之前登錄IIS。
用戶登錄的信息可以采用幾種方式來轉化,但是最終的結果是通過使用一個本地Windows賬戶來認證用戶。通常情況下,這使得Windows認證成為最適合互聯網的方案,其中,一組數量有限的已知用戶被注冊在一臺網絡服務器上。
為了對已知的用戶實行基于Windows的安全策略,需要遵循以下步驟:
1.在Web.config文件里設置認證模型。
2.采用授權規則拒絕所有無身份的用戶訪問 網站。
3.在服務器上配置Windows用戶賬戶。
IIS設置
為了設置拒絕無身份用戶的進入 ,需設置IIS。
Web.config設置
一旦采用適當的虛擬目錄安全設置,就應該在Web.config文件里把認證模式配置為Windows認證。在一個VS.NET項目中,默認的認證模式是Windows認證,示例代碼如下:
1 <configuration>2 <system.web>3 <authentication mode=”Windows”/>4 </system.web>5 </configuration>
可以使用<allow>和<deny>元素來說明允許或限制用戶去訪問特定的文件或目錄。也可以通過roles屬性來限制某一類型的用戶,這些用戶具有相同的Windows組提供的賬戶。
1 <authentication>2 <deny users=”?”/> 3 <allow roles=”Administrator,Light”/>4 <deny users=”light”/>5 </authentication>
如果使用Windows認證。必須用明確的語法說明用戶的域名或服務器。
默認的Windows角色:
1.AccountOperator:負責管理一臺計算機或域內用戶賬戶的用戶。
2.Administrator:完全和不受限制進入計算機或域的用戶。
3.BackupOperator:用來備份操作的用戶。
4.Guest:具有用戶角色但有更多的限制的用戶。
5.PowerUser:同Administrator相似但帶有一些限制的用戶。
6.PrintOperator:負責打印機的用戶。
7.Replicator:在一個域內負責文件復制的用戶。
8.SystemOperator:同Administrator相似但帶有一些限制的用戶。
9.User:不能更改系統設置的用戶,但可以使用系統。
新聞熱點
疑難解答