安全性
實現網站的安全性關系到如下幾方面:
- 身份認證:即確認用戶身份和真實性的過程。ASP.NET 中提供了四種類型的認證:
- Windows 認證
- 表單認證
- 身份驗證
- 自定義認證
- 授權:即定義并為特定用戶分配特定角色的過程。
- 機密性:包括對客戶端瀏覽器和網絡服務器的加密。
- 完整性:保持數據完整性。例如,實現數字簽名。
基于表單的認證
一般來講,基于表單的認證包括編輯網絡配置文件以及具有驗證碼的注冊頁面。
網絡配置文件可由如下代碼編寫:
上面的代碼段中提及的 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 就能夠通過網站管理工具輕松地無縫實現用戶創建、身份認證和授權。這種工具能夠實現用戶和角色的創建。
除此之外,ASP.NET 有現成的登錄控制系列,可以為你控制執行所有的工作。
基于表單的安全性的實現
為了建立基于表單的認證,你需要做到如下幾點:
- 支持認證過程的用戶數據庫
- 一個使用數據庫的網站
- 用戶賬戶
- 角色
- 用戶活動和群體活動的限制
- 一個顯示用戶狀態及其他信息的用戶頁面
- 允許用戶登錄、找回密碼、修改密碼的登錄界面。
為了創建一個用戶,需要采取以下步驟:
第一步:選擇網站 -> 配置 ASP.NET 以打開網絡應用管理工具。
第二步:點擊安全選項。
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl ="signup.aspx" defaultUrl = a€?Welcome.aspxa€? />
</authentication>
</system.web>
</configuration>
第十一步:用戶經常會忘記密碼。PasswordRecovery 控件幫助用戶重新獲得登錄這個賬戶。選擇登錄控件。打開它的小標簽,并選擇 Convert to Template。
通過自定義這個控件的用戶界面,在登錄按鈕下方放置一個超鏈接控件,這個控件應該是能夠鏈接到找回密碼頁面的。
IIS 認證:SSL
安全套接層(SSL)是用來確保安全連接的協議。通過使用 SSL,瀏覽器會把送到服務器的所有數據加密,并解密來自服務器的所有數據。與此同時,服務器也會對倆字瀏覽器的所有數據進行加解密。
安全連接的 URL 使用的是 HTTPS 協議而不是 HTTP 協議。一個很小的加鎖也會被使用了安全連接的瀏覽器顯示出來。當瀏覽器使用 SSL 主動地與服務器進行交流時,服務器會發送一個安全證書以對服務器本身進行認證。
要想使用 SSL ,你需要從一個可以信任的認證機構(CA)購買一個數字安全證書,并在網絡服務器上安裝這個證書。以下是一些可以信任的,有較好名譽認證機構:
- www.verisign.com
- www.geotrust.com
- www.thawte.com
SSL 是建立在所有主要的瀏覽器和服務器上的。要啟用 SSL,你需要安裝數字證書。不同數字證書的強度不同,是根據加密過程中產生的密鑰長度而有所區別。密鑰越長,證書就越安全,連接也就越安全。
40 比特 | 支持大多數瀏覽器但是很容易破解。 |
56 比特 | 比 40 比特的更健壯。 |
128 比特 | 很難破解,但并不是所有的瀏覽器都支持。 |