資訊: 協助保護表單驗證使用安全通訊端層 (SSL)

文章翻譯 文章翻譯
文章編號: 813829 - 檢視此文章適用的產品。
本文參照下列 Microsoft.NET Framework 類別庫命名空間:
  • System.Web.Security
全部展開 | 全部摺疊

在此頁中

結論

預設情況下,包含表單驗證票證的 Cookie 未保護在 Microsoft ASP.NET Web 應用程式中使用表單驗證時。本文將告訴您如何使用安全通訊端層 (SSL) 來協助安全表單驗證。本文也將告訴其他實作選項,以及協助安全表單驗證的替代方式。

其他相關資訊

表單架構驗證是一項 ASP.NET 驗證服務,可讓應用程式來提供它們自己的登入介面,並執行自訂認證驗證。ASP.NET 驗證使用者,然後將未驗證的使用者重新導向至 loginUrl 屬性的 <forms>所指定的登入頁面與表單驗證 Web.config 檔中的項目。當您提供認證透過登入表單時,應用程式就會驗證該要求,然後系統會發出 FormsAuthenticationTicket 類別 Cookie 的形式。當做 Cookie 在後續回應傳遞 FormsAuthenticationTicket 類別 Web 來自已驗證的用戶端的要求。

雖然表單驗證提供了彈性的驗證方法但必須仔細考慮一些重要的問題時協助保護 ASP.NET 應用程式的安全。您必須使用 SSL,因為認證傳送到伺服器以純文字以保護初始登入認證。您也必須確定您協助保護包含表單驗證票證的 Cookie。若要執行此動作在所有網頁上使用 SSL 來協助保護票證。或者,您可以加密表單驗證票證,藉由設定 <forms>保護 屬性 項目為 全部 或在 Web.config 檔和使用 FormsAuthentication加密 方法 加密 類別來加密票證。如需 加密 方法 FormsAuthentication 類別的詳細資訊,請參閱" 」 > 一節。

表單驗證的優點

  • 表單驗證支援驗證對自訂的資料儲存,例如 Microsoft SQL Server 資料庫或 Active Directory 目錄服務。如需詳細資訊請參閱本文的 < REFERENCES > 一節]。
  • 表單驗證支援角色為基礎的授權,以從資料存放區角色查閱。
  • 表單驗證已順利地整合與 Web 使用者介面。如需詳細資訊請參閱本文的 < REFERENCES > 一節]。
  • ASP.NET 提供許多基礎結構。相對較小的程式碼是必要相較於 Microsoft 動態伺服器網頁版本 3.0 版和更早
  • ASP.NET 表單驗證並不需要 Microsoft Internet Explorer。表單驗證支援廣泛範圍的 Web 瀏覽器用戶端。

如何幫助您更安全表單驗證

  • 所有網頁使用 SSL。
  • 使用 FormsAuthentication 類別的 加密 方法。

所有網頁使用 SSL

協助確認要驗證 Cookie 保持安全整個用戶端瀏覽器工作階段,藉由使用 SSL 加密的所有網頁,以都協助安全安全存取。在應用程式上使用 SSL 加密,您協助防止任何人從危害驗證 Cookie 及傳輸其他寶貴的資訊。

設定為 truerequireSSL 屬性的值,在 Web.config 檔中。Cookie 傳送至瀏覽器時,這可以將置於位置的 SSL。如果您沒有設定 requireSSL 值為 true,表單就會擲回例外狀況,或不會驗證與 Cookie。

requireSSL 設為 true 時,加密的連線可以協助保護該使用者的認證,並 ASP.NET 設定驗證 Cookie [HttpCookie.Secure 屬性。除非則連接會使用 SSL 相容的瀏覽器不會傳回該 Cookie。下列範例顯示如何在應用程式的 Web.config 檔中執行這項操作:
 <configuration>
 <system.web>
   <authentication mode="Forms">
     <forms name=".ASPXAUTH"
       loginUrl="login.aspx" 
       protection="All"
       timeout="20"
       requireSSL="true">
     </forms>
   </authentication > 
   <authorization>
     <deny users="?" />
   </authorization>
 </system.web>
</configuration>
如果 Cookie 設定為 [安全地傳輸下列範例會採取動作:

Visual C#.NET 代碼
 string cookieName = FormsAuthentication.FormsCookieName.ToString(); 
 HttpCookie MyCookie = Context.Request.Cookies[cookieName];

 if (MyCookie.Secure)
 {
      Response.Write("The cookie is secure with SSL.");
      // Add other required code here.
 } 

Visual Basic.NET 程式碼
   Dim cookieName As String = FormsAuthentication.FormsCookieName.ToString
   Dim MyCookie As HttpCookie = Context.Request.Cookies(cookieName)
   If MyCookie.Secure Then
      Response.Write("The cookie is secure with SSL.")
      ' Add other required code here.
   End If

使用 [加密 FormsAuthentication 類別方法

如果您只使用 SSL 在初始登入網頁上,加密傳遞進行驗證的認證,請確定表單驗證票證包含在 Cookie 中受到保護。因為 Cookie,會在每一個後續 Web 要求上傳遞用戶端與伺服器之間,必須加以保護表單驗證票證。若要加密表單驗證票證,設定 <forms>保護 屬性 項目,使用 加密 方法的 FormsAuthentication 類別來加密票證。
<authentication mode="Forms">
  <forms name="MyAppFormsAuth"
       loginUrl="login.aspx"
       protection="All"
       timeout="20" 
       path="/" >
  </forms>
</authentication> 
因為應用程式呼叫 FormsAuthentication.Encrypt 方法時,保護 屬性設定為 全部,票證必須加以驗證,並進行加密。

當您建立表單驗證票證時,請呼叫 加密 方法。您通常會建立在應用程式的 登入 事件處理常式的票證。

Visual C#.NET 代碼
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
Visual Basic.NET 程式碼
Dim encryptedTicket As String = FormsAuthentication.Encrypt(authTicket)

?考

ASP.NET 和表單驗證資訊請造訪下列 Microsoft 網站]:
在 ASP.NET 中的驗證:.NET 安全性指引
http://msdn2.microsoft.com/en-us/library/ms978378.aspx
表單驗證提供者
http://msdn2.microsoft.com/en-us/library/9wff0kyh(vs.71).aspx
如其他有關使用 SSL 來保障安全表單驗證的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
306590資訊: ASP.NET 安全性概觀
315588如何: 安全的 ASP.NET 應用程式使用用戶端憑證
313116PRB: 表單驗證要求會不導向至 loginUrl 頁面
324069如何: 設定 IIS 中的 HTTPS 服務
326340AD-HOW TO: 使用表單驗證和 Visual Basic.NET 對 Active Directory 進行驗證
301240SQL-HOW TO: 使用 C#.NET,ASP.NET 應用程式中實作表單型驗證
308157SQL-HOW TO: 使用 Visual Basic.NET,ASP.NET 應用程式中實作表單型驗證
311495如何: 在您的 ASP.NET 中實作角色架構安全性與表單基礎的驗證使用 Visual C#.NET 應用程式
306238如何: 使用 Visual Basic.NET 在 ASP.NET 應用程式中實作角色為基礎的安全性與表單基礎的驗證
312906如何: 使用 Visual C#.NET 以用於表單驗證來建立機碼
313091如何: 使用 Visual Basic.NET 以用於表單驗證來建立機碼

屬性

文章編號: 813829 - 上次校閱: 2007年4月19日 - 版次: 2.5
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.1
關鍵字:?
kbmt kbcookie kbwebforms kbauthentication kbsecurity kbconfig kbinfo KB813829 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:813829
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com