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

不支援您的瀏覽器

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

更新至最新版本的 Internet Explorer

具有大量表單金鑰、檔案或 JSON 裝載成員的 ASP.NET 請求失敗,並產生例外狀況

Windows XP 支援已結束

Microsoft 於 2014 年 4 月 8 日結束對 Windows XP 的支援。此變更已影響您的軟體更新和安全性選項。 瞭解這對您的意義為何且如何持續受保護。

Windows Server 2003 的支援已於 2015 年 7 月 14 日結束

Microsoft 已於 2015 年 7 月 14 日結束對 Windows Server 2003 的支援。此變更已影響您的軟體更新和安全性選項。 瞭解這對您的意義為何且如何持續受保護。

結論
Microsoft 安全性更新 MS11-100 會將 HTTP 要求中的表單金鑰、檔案和 JSON 裝載成員的最大數量限制為 1000。因為此變更的緣故,ASP.NET 應用程式會拒絕具有超過 1000 個上述元素的要求。發出上述種類要求的 HTTP 用戶端會遭到拒絕,而網頁瀏覽器中會出現錯誤訊息。錯誤訊息通常內含 HTTP 500 狀態碼。你可以每個應用程式為單位個別為其建立新限制。如需設定指示,請參閱<解決方式>一節。


徵狀
具有大量表單金鑰、檔案或 JSON 裝載的 ASP.NET 請求會收到來自伺服器的錯誤訊息。伺服器上的應用程式記錄檔具有內含 ASP.NET 特定版本專屬來源的警告項目及事件識別碼 1309。事件記錄檔會包含下列其中一個訊息:


訊息 1:
應用程式資訊:
應用程式定義域:/LM/W3SVC/1/ROOT/<App Domain>
信任層級:中安全性
應用程式虛擬路徑:<VDIR 路徑>
應用程式路徑:<應用程式路徑>
電腦名稱:<電腦名稱>
處理序資訊:
處理序識別碼: 0001
處理序名稱:w3wp.exe
帳戶名稱:IIS APPPOOL\DefaultAppPool

例外狀況資訊:
例外狀況類型:HttpException
例外狀況訊息:URL 編碼型式資料無效。
at System.Web.HttpRequest.FillInFormCollection()
at System.Web.HttpRequest.get_Form()
at System.Web.HttpRequest.get_HasForm()
at System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
at System.Web.UI.Page.DeterminePostBackMode()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


訊息 2:
應用程式資訊:
Application domain:/LM/W3SVC/1/ROOT/<App Domain>
信任層級:中度
應用程式虛擬路徑:<VDIR 路徑>
應用程式路徑:<應用程式路徑>
電腦名稱:<電腦名稱>

處理序資訊:
處理序識別碼: 0001
處理序 name:w3wp.exe
帳戶名稱:IIS APPPOOL\DefaultAppPool

例外狀況資訊:
例外狀況類型:InvalidOperationException
例外狀況訊息:物件的目前狀態導致作業無效。
at System.Web.HttpRequest.FillInFilesCollection()
at System.Web.HttpRequest.get_Files()
at FileUpload.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

訊息 3:
應用程式資訊:
Application domain:/LM/W3SVC/1/ROOT/<App Domain>
信任層級:中度
應用程式虛擬路徑:<VDIR 路徑>
應用程式路徑:<應用程式路徑>
電腦名稱:<電腦名稱>

處理序資訊:
處理序識別碼: 0001
處理序 name:w3wp.exe
帳戶名稱:IIS APPPOOL\DefaultAppPool

例外狀況資訊:
例外狀況類型:InvalidOperationException
例外狀況訊息:物件的目前狀態導致作業無效。
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
at System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
at Failing.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


IIS 記錄檔會顯示類似下列的項目:
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




發生的原因
資訊安全佈告欄 MS11-100 敘述的 Microsoft 安全性更新,會將表單金鑰、檔案和 JSON 成員的預設最大數量限制變更為 ASP.NET 要求可接受的 1000。此變更主要是解決 Microsoft 資訊安全佈告欄 MS11-100 文件中拒絕服務的弱點。


解決方案
達到此表單金鑰或檔案限制的應用程式可依照下方所示的 ASP.NET 應用程式設定檔內容修改 ASP.NET appSetting aspnet:MaxHttpCollectionKeys。此設定可解決<徵狀>一節中的錯誤訊息 1 和 2。
<configuration><appSettings><add key="aspnet:MaxHttpCollectionKeys" value="1000" /></appSettings></configuration>


注意 如果您是在 x86 系統上使用 ASP.NET 1.1,請將 DWORD 值新增到下列登錄機碼來調整此設定:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
如果您是在 x64 系統上使用 ASP.NET 1.1,請將 DWORD 值新增到下列登錄機碼來調整此設定:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys



達到此 JSON 裝載限制的應用程式可依照下方所示的 ASP.NET 應用程式設定檔內容修改 ASP.NET appSetting aspnet:MaxJsonDeserializerMembers。此設定可解決<徵狀>一節中的錯誤訊息 3。
<configuration><appSettings><add key="aspnet:MaxJsonDeserializerMembers" value="1000" /></appSettings></configuration>



注意 將此值設定超過預設設定值可加強伺服器對資訊安全佈告欄 MS11-100 中所述的拒絕服務弱點的偵測能力。


参考
如需資訊安全佈告欄 MS11-100 的詳細資訊,請參閱下列 TechNet 文章: 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2638420 MS11-100:.NET Framework 中的弱點可能會允許權限提高:2011 年 12 月 29 日
內容

文章識別碼:2661403 - 最後檢閱時間:11/29/2012 14:37:00 - 修訂: 4.0

  • Microsoft .NET Framework 4.0
  • Microsoft .NET Framework 3.5 Service Pack 1
  • Microsoft .NET Framework 3.5
  • Microsoft .NET Framework 2.0 Service Pack 2
  • Microsoft .NET Framework 2.0 Service Pack 1 (x86)
  • Microsoft .NET Framework 2.0
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.0
  • Windows 7 Service Pack 1
  • Windows 7 Enterprise
  • Windows 7 Professional
  • Windows 7 Ultimate
  • Windows 7 Home Premium
  • Windows 7 Home Basic
  • Windows Server 2008 R2 Service Pack 1
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 Service Pack 2
  • Windows Vista Service Pack 2
  • Microsoft Windows Server 2003 Service Pack 2
  • Microsoft Windows XP Service Pack 3
  • atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403
意見反應
//c.microsoft.com/ms.js'><\/script>");