ASP.NET提供了一個多層的安全模型,這個模型可以很是容易的保護Web應用程序。程序員
安全策略沒有必要很是複雜,可是須要應用安全策略的地方倒是很是普遍的。程序員須要保證本身的應用程序不能被騙取,而把私有信息發送出去。web
限制訪問的文件類型算法
ASP.NET自動提供一個基本的安全策略來阻止對特定文件的訪問請求。ASP.NET向IIS註冊這些文件類型,並把它們配置給IIS中的一個類HttpForbiddenHandler,這個類在它的生命週期中只有一個做用,就是拒絕全部向配置到它裏面的文件發送請求。數據庫
被限制訪問的文件類型以下:後端
1..asax:全局文件,提供了一些在一箇中心位置響應應用程序級或模塊級事件的方法。安全
2..asc:Web服務文件,提供Web服務。服務器
3..config:配置文件,提供應用程序的配置。網絡
4..cs:源代碼文件,由C#編寫。ide
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:不能更改系統設置的用戶,但能夠使用系統。