您目前已離線,請等候您的網際網路重新連線

不支援您的瀏覽器

您必須更新瀏覽器,才能使用此網站。

更新至最新版本的 Internet Explorer

如何以程式設計的方式測試與 ASP.NET 相關的規範化問題

簡介
本文將告訴您,如何將更多安全防護新增至 ASP.NET 應用程式,以避免發生常見的規範化問題。
其他相關資訊

什麼是規範化?

規範化是指,將各種相同形式的名稱解析成單一標準名稱的程序, 此單一標準名稱也稱為規範名稱。例如,在特定電腦中,名稱為 c:\dir\test.dat、test.dat 及 ..\..\test.dat 可能都是指同一個檔案。所謂規範化,就是將這類名稱對應到類似 c:\dir\test.dat 名稱的程序。

當網站伺服器收到 URL 時,伺服器就會將要求對應到檔案系統路徑,以判斷如何發出回應。用來對應要求的規範化常式必須正確地剖析 URL,才能避免提供或處理未預期的內容。如需有關規範化的詳細資訊,請造訪下列 Microsoft 網站: 我們建議您採用最佳的實務做法,以保護應用程式的安全。如需詳細資訊,請參閱下列章節。

將額外的規範化安全防護新增至您的 Web 應用程式

Microsoft ASP.NET 開發人員可以在儲存於 Web 應用程式根目錄的 Global.asax 檔案中新增 Application_BeginRequest 事件處理常式,來增加更多檢查,以防止 Web 應用程式發生規範化問題。此事件處理常式會執行每個網站要求, 您可以在這個事件處理常式中插入程式碼,以避免發生規範化問題。

程式碼範例

下列程式碼範例說明如何將 Application_BeginRequest 事件處理常式新增至 Global.asax 檔案中。這個事件處理常式會藉由執行路徑驗證,以協助防範出現無效字元和格式錯誤的 URL。因此,您就可以避免發生常見的規範化問題。

Global.asax 程式碼範例 (Visual Basic .NET)

<script language="vb" runat="server">Sub Application_BeginRequest(Sender as Object, E as EventArgs)    If (Request.Path.IndexOf(chr(92)) >= 0 OR _        System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then        Throw New HttpException(404, "Not Found")    End IfEnd Sub</script>

Global.asax 程式碼範例 (C#)

<script language="C#" runat="server">void Application_BeginRequest(object source, EventArgs e) {    if (Request.Path.IndexOf('\\') >= 0 ||        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {        throw new HttpException(404, "not found");    }}</script>

免責聲明

「Microsoft 知識庫」中的資訊係依「現狀」提供,不含任何形式之瑕疵責任擔保。Microsoft 不以暗示或其他方式,提供與這些產品的效能或可靠性有關的保證。無論任何情況下的損害,Microsoft Corporation 及其供應商皆不負任何法律責任,包括直接、間接、偶發意外、推衍引發、業務利潤損失或特殊損害。即使 Microsoft corporation 及其供應商已被告知此類損害的可能性亦不負任何責任。某些地區並不允許排除及限制推衍後果或意外損害責任, 因此前述限制不適用於這些地區。
內容

文章識別碼:887459 - 最後檢閱時間:12/03/2007 18:52:49 - 修訂: 2.5

  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
  • kbsecurity kbtshoot KB887459
意見反應