在站點中實現安全性有以下幾個方面:
身份驗證:這是確保用戶身份和真實性的過程。ASP.NET允許四種類型的身份驗證:
- Windows Authentication
- Forms Authentication
- Passport Authentication
- Custom Authentication
授權:它是定義特定角色並將其分配給特定用戶的過程。
機密性:它涉及對客戶端瀏覽器和web伺服器之間的通道進行加密。
完整性:它涉及維護數據的完整性。例如,實現數字簽名。
Forms-Based Authentication
傳統上,基於表單的身份驗證包括編輯web.config文件和添加帶有適當身份驗證代碼的登錄頁。
可以編輯web.config文件並在其上寫入以下代碼:
<configuration> <system.web> <authentication mode="Forms"> <forms loginUrl ="login.aspx"/> </authentication> <authorization> <deny users="?"/> </authorization> </system.web> ... ... </configuration>
上面代碼片段中提到的login.aspx頁面可能包含以下代碼隱藏文件,其中硬編碼了用於身份驗證的用戶名和密碼。
protected bool authenticate(String uname, String pass) { if(uname == "Tom") { if(pass == "tom123") return true; } if(uname == "Dick") { if(pass == "dick123") return true; } if(uname == "Harry") { if(pass == "har123") return true; } return false; } public void OnLogin(Object src, EventArgs e) { if (authenticate(txtuser.Text, txtpwd.Text)) { FormsAuthentication.RedirectFromLoginPage(txtuser.Text, chkrem.Checked); } else { Response.Write("Invalid user name or password"); } }
請注意,FormsAuthentication類負責身份驗證過程。
但是,Visual Studio允許您通過Web站點管理工具無縫輕鬆地實現用戶創建、身份驗證和授權,而無需編寫任何代碼。此工具允許創建用戶和角色。
除此之外,ASP.NET還提供了readymade登錄控制項集,其中包含爲您執行所有作業的控制項。
Implementing Forms-Based Security
要設置基於表單的身份驗證,您需要執行以下操作:
- A database of users to support the authentication process
- A website that uses the database
- User accounts
- Roles
- Restriction of users and group activities
- A default page, to display the login status of the users and other information.
- A login page, to allow users to log in, retrieve password, or change password
要創建用戶,請執行以下步驟:
步驟(1):選擇「網站」->「ASP.NET配置」打開「Web應用程式管理工具」。
步驟(2):單擊「安全」選項卡。
步驟(3):通過選擇「從Internet」單選按鈕,選擇「基於表單的身份驗證」的身份驗證類型。
步驟(4):單擊「創建用戶」連結創建一些用戶。如果已經創建了角色,則可以在此階段將角色分配給用戶。
步驟(5):創建網站並添加以下頁面:
- Welcome.aspx
- Login.aspx
- CreateAccount.aspx
- PasswordRecovery.aspx
- ChangePassword.aspx
步驟(6):從工具箱的「登錄」部分,在Welcome.aspx上放置一個LoginStatus控制項。它有兩個模板:LoggedIn和LoggedOut。
在LoggedOut模板中,有一個登錄連結,在LoggedIn模板中,控制項上有一個註銷連結。可以從「屬性」窗口更改控制項的登錄和註銷文本屬性。
步驟(7):將工具箱中的LoginView控制項放在LoginStatus控制項下面。在這裡,您可以放置文本和其他控制項(超連結、按鈕等),這些控制項根據用戶是否登錄而顯示。
此控制項有兩個視圖模板:匿名模板和LoggedIn模板。選擇每個視圖並爲每個模板顯示的用戶編寫一些文本。文本應放在標有紅色的區域。
步驟(8):應用程式的用戶由開發人員創建。您可能希望允許訪問者創建用戶帳戶。爲此,請在LoginView控制項下添加連結,該控制項應連結到CreateAccount.aspx頁。
步驟(9):在「創建帳戶」頁上放置CreateUserWizard控制項。將此控制項的ContinueDestinationPageUrl屬性設置爲Welcome.aspx。
步驟(10):創建登錄頁。在頁面上放置登錄控制項。LoginStatus控制項自動連結到Login.aspx。要更改此默認值,請在web.config文件中進行以下更改。
例如,如果要將登錄頁命名爲signup.aspx,請將以下行添加到web.config的「身份驗證」部分:
<configuration> <system.web> <authentication mode="Forms"> <forms loginUrl ="signup.aspx" defaultUrl = “Welcome.aspx†/> </authentication> </system.web> </configuration>
步驟(11):用戶經常忘記密碼。PasswordRecovery控制項幫助用戶訪問帳戶。選擇登錄控制項。打開其智能標記並單擊「轉換爲模板」。
自定義控制項的UI以在「登錄」按鈕下放置超連結控制項,該按鈕應連結到PassWordRecovery.aspx。
步驟(12):在「密碼恢復」頁上放置密碼恢復控制項。此控制項需要電子郵件伺服器將密碼發送給用戶。
步驟(13):在Welcome.aspx中的LoginView控制項的LoggedIn模板中創建到ChangePassword.aspx頁的連結。
步驟(14):在「更改密碼」頁上放置「更改密碼」控制項。此控制項還有兩個視圖。
現在運行應用程式並觀察不同的安全操作。
要創建角色,請返回Web應用程式管理工具並單擊「安全性」選項卡。單擊「創建角色」並爲應用程式創建一些角色。
單擊「管理用戶」連結並爲用戶分配角色。
IIS Authentication: SSL
安全套接字層或SSL是用於確保安全連接的協議。啓用SSL後,瀏覽器將加密發送到伺服器的所有數據,並解密來自伺服器的所有數據。同時,伺服器對進出瀏覽器的所有數據進行加密和解密。
安全連接的URL以HTTPS而不是HTTP開頭。瀏覽器使用安全連接顯示小鎖。當瀏覽器首次嘗試通過使用SSL的安全連接與伺服器通信時,伺服器通過發送其數字證書進行身份驗證。
要使用SSL,需要從可信證書頒發機構(CA)購買數字安全證書並將其安裝到web伺服器中。以下是一些受信任和聲譽良好的證書頒發機構:
- www.verisign.com
- www.geotrust.com
- www.thawte.com
SSL內置於所有主要的瀏覽器和伺服器中。要啓用SSL,需要安裝數字證書。各種數字證書的強度取決於加密過程中生成的密鑰的長度。長度越長,證書就越安全,因此連接也就越安全。