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

如何以程式設計的方式測試與 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
意見反應