ASP.NET - 安全性



在網站中實現安全性包含以下幾個方面

  • 身份驗證:它是確保使用者身份和真實性的過程。ASP.NET 允許四種類型的身份驗證

    • Windows 身份驗證
    • 表單身份驗證
    • Passport 身份驗證
    • 自定義身份驗證
  • 授權:它是定義和分配特定角色給特定使用者的過程。

  • 機密性:它涉及到加密客戶端瀏覽器和 Web 伺服器之間的通訊通道。

  • 完整性:它涉及到維護資料的完整性。例如,實現數字簽名。

基於表單的身份驗證

傳統上,基於表單的身份驗證涉及編輯 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 允許您透過網站管理工具輕鬆實現使用者建立、身份驗證和授權,而無需編寫任何程式碼。此工具允許建立使用者和角色。

除此之外,ASP.NET 還提供現成的登入控制元件集,其中包含執行所有工作的控制元件。

實現基於表單的安全

要設定基於表單的身份驗證,您需要以下內容

  • 支援身份驗證過程的使用者資料庫
  • 使用該資料庫的網站
  • 使用者帳戶
  • 角色
  • 限制使用者和組活動
  • 預設頁面,用於顯示使用者的登入狀態和其他資訊。
  • 登入頁面,允許使用者登入、檢索密碼或更改密碼

要建立使用者,請執行以下步驟

步驟 (1):選擇網站 -> ASP.NET 配置以開啟 Web 應用程式管理工具。

步驟 (2):單擊“安全”選項卡。

Security tab

步驟 (3):透過選擇“來自 Internet”單選按鈕,將身份驗證型別選擇為“基於表單的身份驗證”。

Authentication Type

步驟 (4):單擊“建立使用者”連結以建立一些使用者。如果您已經建立了角色,則可以在此階段將角色分配給使用者。

Create Users link

步驟 (5):建立一個網站並新增以下頁面

  • Welcome.aspx
  • Login.aspx
  • CreateAccount.aspx
  • PasswordRecovery.aspx
  • ChangePassword.aspx

步驟 (6):從工具箱的登入部分將 LoginStatus 控制元件放置在 Welcome.aspx 上。它有兩個模板:LoggedIn 和 LoggedOut。

在 LoggedOut 模板中,有一個登入連結;在 LoggedIn 模板中,控制元件上有一個登出連結。您可以從“屬性”視窗更改控制元件的登入和登出文字屬性。

Login Status control

步驟 (7):在 LoginStatus 控制元件下方從工具箱放置一個 LoginView 控制元件。在這裡,您可以放置文字和其他控制元件(超連結、按鈕等),這些控制元件根據使用者是否登入而顯示。

此控制元件有兩個檢視模板:匿名模板和已登入模板。選擇每個檢視併為使用者編寫一些文字,以便為每個模板顯示。文字應放置在標記為紅色的區域。

Login View control

步驟 (8):應用程式的使用者由開發人員建立。您可能希望允許訪客建立使用者帳戶。為此,在 LoginView 控制元件下方新增一個連結,該連結應連結到 CreateAccount.aspx 頁面。

步驟 (9):在建立帳戶頁面上放置一個 CreateUserWizard 控制元件。將此控制元件的 ContinueDestinationPageUrl 屬性設定為 Welcome.aspx。

CreateUserWizard control

步驟 (10):建立登入頁面。在頁面上放置一個 Login 控制元件。LoginStatus 控制元件會自動連結到 Login.aspx。要更改此預設設定,請在 web.config 檔案中進行以下更改。

例如,如果您想將登入頁面命名為 signup.aspx,請將以下行新增到 web.config 的 <authentication> 部分

<configuration>
   <system.web>
      <authentication mode="Forms">
         <forms loginUrl ="signup.aspx" defaultUrl = “Welcome.aspx” />
      </authentication>
   </system.web>
</configuration>

步驟 (11):使用者經常忘記密碼。PasswordRecovery 控制元件幫助使用者訪問帳戶。選擇 Login 控制元件。開啟其智慧標記並單擊“轉換為模板”。

自定義控制元件的 UI 以在登入按鈕下方放置一個超連結控制元件,該控制元件應連結到 PassWordRecovery.aspx。

PasswordRecovery control

步驟 (12):在密碼恢復頁面上放置一個 PasswordRecovery 控制元件。此控制元件需要一個電子郵件伺服器才能將密碼傳送給使用者。

PasswordRecovery control2

步驟 (13):在 Welcome.aspx 中的 LoginView 控制元件的 LoggedIn 模板中建立到 ChangePassword.aspx 頁面的連結。

ChangePassword control

步驟 (14):在更改密碼頁面上放置一個 ChangePassword 控制元件。此控制元件也有兩個檢視。

ChangePassword control2

現在執行應用程式並觀察不同的安全操作。

要建立角色,請返回到 Web 應用程式管理工具並單擊“安全”選項卡。單擊“建立角色”併為應用程式建立一些角色。

Web Application Administration

單擊“管理使用者”連結並將角色分配給使用者。

Manage Users

IIS 身份驗證:SSL

安全套接字層或 SSL 用於確保安全連線的協議。啟用 SSL 後,瀏覽器會加密傳送到伺服器的所有資料,並解密來自伺服器的所有資料。同時,伺服器會加密和解密到瀏覽器和來自瀏覽器的所有資料。

安全連線的 URL 以 HTTPS 開頭,而不是 HTTP。使用安全連線的瀏覽器會顯示一個小鎖。當瀏覽器首次嘗試使用 SSL 透過安全連線與伺服器通訊時,伺服器會透過傳送其數字證書來進行身份驗證。

要使用 SSL,您需要從受信任的證書頒發機構 (CA) 購買數字安全證書並將其安裝在 Web 伺服器中。以下是一些受信任和信譽良好的證書頒發機構

  • www.verisign.com
  • www.geotrust.com
  • www.thawte.com

SSL 內置於所有主要的瀏覽器和伺服器中。要啟用 SSL,您需要安裝數字證書。各種數字證書的強度因加密期間生成的金鑰長度而異。長度越長,證書越安全,因此連線也越安全。

強度 描述
40 位 大多數瀏覽器都支援,但易於破解。
56 位 比 40 位更強。
128 位 極難破解,但並非所有瀏覽器都支援。
廣告

© . All rights reserved.