實現網站的安全性關係到以下幾方面:
身份認證:即確認使用者身分和真實性的過程。 ASP.NET 中提供了四種類型的認證:
Windows 認證
表單認證
身份驗證
自訂認證
授權:即定義並為特定使用者指派特定角色的過程。
機密性:包括對客戶端瀏覽器和網頁伺服器的加密。
完整性:保持資料完整性。例如,實作數位簽章。
一般來講,基於表單的認證包括編輯網路設定檔以及具有驗證碼的註冊頁面。網路設定檔可由以下程式碼編寫:
<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 就能夠透過網站管理工具輕鬆地無縫實現使用者建立、身分認證和授權。這種工具能夠實現使用者和角色的創建。
除此之外,ASP.NET 有現成的登入控制系列,可以為你掌控執行所有的工作。
為了建立基於表單的認證,你需要做到以下幾點:
支援認證過程的使用者資料庫
一個使用資料庫的網站
使用者帳號
角色
使用者活動和群體活動的限制
一個顯示使用者狀態及其他資訊的使用者頁面
允許使用者登入、找回密碼、修改密碼的登入介面。
為了建立一個用戶,需要採取以下步驟:
第一步:選擇網站-> 設定ASP.NET 以開啟網路應用程式管理工具。
第二步:點選安全性選項。
步驟三:選擇'Forms based authentication' 選項,以將認證類型設定為'From the Internet'。
第四步:點選'Create Users'。如果你已經創建了角色,你剛好可以在這一步把角色分配給該使用者。
第五步:建立一個網站,並新增如下頁面:
歡迎頁面
登入頁面
註冊頁面
找回密碼頁面
修改密碼頁面
步驟六:在歡迎頁面的登入部分設定一個登入狀態控制項。包含兩個標準框:LoggedIn 和LoggedOut。
LoggedIn 有查看已登入使用者的選項,LoggedOut 內有查看已登出使用者的選項。你可以在屬性視窗裡改變登入和登出的文字屬性。
第七步:在LoginStatus 控制項的下方設定一個LoginView 控制項。你可以在此設定一些能反應使用者是否已經登入的其他文字或其他控制項(如超連結、按鈕等)。
這個控制有兩個標準框: Anonymous 框和LoggedIn 框。選擇每種視圖,並為使用者編寫一些文本,以作為選擇標準框時要顯示的內容。文字應該被放在如下圖中標紅的區域。
第八步:由開發者創建應用程式使用者。你也許想要允許遊客也能夠建立一個使用者帳號。要實現這個,你可以在LoginView 控制項下新增一個可以轉到註冊頁面的連結。
第九步:在註冊頁面設定一個CreateUserWizard 控制項。設定這個控制項的ContinueDestinationPageUrl 屬性,以確保能夠前往歡迎頁面。
第十步:建立登入頁面。在這個頁面上設定一個Login 控制項。 LoginStatus 控制項會自動連接到登入頁面。在網路設定檔裡做如下改動可以改變這種預設值。
例如,如果你把你的登入頁面命名為signup.aspx ,可以在網路設定檔的 部分加入如下幾行程式碼。
<configuration> <system.web> <authentication mode="Forms"> <forms loginUrl ="signup.aspx" defaultUrl = “Welcome.aspx†/> </authentication> </system.web></configuration>
第十一步:使用者常常忘記密碼。 PasswordRecovery 控制項可協助使用者重新取得登入這個帳號。選擇登入控制項。打開它的小標籤,並選擇'Convert to Template'。
透過自訂這個控件的使用者介面,在登入按鈕下方放置一個超連結控件,這個控件應該是能夠連結到找回密碼頁面的。
步驟十二:在找回密碼頁面設定一個PasswordRecovery 控制項。這個控制項需要郵件伺服器把密碼傳送給使用者。
第十三步:在歡迎頁面的LoginView 控制項的LoggedIn 框內設定一個前往修改密碼頁面的連結。
步驟十四:在修改密碼頁面設定一個ChangePassword 控件,這個控件有兩種視圖:
現在運行這個應用,觀察不同的安全操作。可以回到網路應用程式管理工具,點選安全選項,來建立角色。點擊'Create Roles' 為這個應用程式來創建一些角色。
點選'Manage Users',可以給使用者指派角色。
安全通訊端(SSL)是用來確保安全連線的協定。透過使用SSL,瀏覽器會把送到伺服器的所有資料加密,並解密來自伺服器的所有資料。同時,伺服器也會對倆字瀏覽器的所有資料進行加解密。
安全連線的URL 使用的是HTTPS 協定而不是HTTP 協定。一個很小的加鎖也會被使用了安全連線的瀏覽器顯示出來。當瀏覽器使用SSL 主動地與伺服器進行交流時,伺服器會傳送安全憑證以對伺服器本身進行認證。
要想使用SSL ,你需要從一個可以信任的認證機構(CA)購買一個數位安全證書,並在網路伺服器上安裝這個證書。以下是一些可以信任的,有較好名譽認證機構:
www.verisign.com
www.geotrust.com
www.thawte.com
SSL 是建立在所有主要的瀏覽器和伺服器上的。要啟用SSL,你需要安裝數位憑證。不同數位憑證的強度不同,是根據加密過程中產生的金鑰長度而有所區別。密鑰越長,憑證就越安全,連線也越安全。
強度 | 描述 |
---|---|
40 比特 | 支援大多數瀏覽器但是很容易破解。 |
56 比特 | 比40 比特的更健壯。 |
128 比特 | 很難破解,但並不是所有的瀏覽器都支援。 |