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

文章翻譯 文章翻譯
文章編號: 2661403 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

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 資訊安全佈告欄 MS11-100 - 重要
如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2638420 MS11-100:.NET Framework 中的弱點可能會允許權限提高:2011 年 12 月 29 日

屬性

文章編號: 2661403 - 上次校閱: 2012年11月29日 - 版次: 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 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 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 Service Pack 2?應用於:
    • Windows Server 2008 for Itanium-Based Systems
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
  • Windows Vista Service Pack 2?應用於:
    • Windows Vista 商用入門版
    • Windows Vista 商用進階版
    • Windows Vista 家用入門版
    • Windows Vista 家用進階版
    • Windows Vista Starter
    • Windows Vista 旗艦版
    • Windows Vista 商用進階 64 位元版
    • Windows Vista 家用入門 64 位元版
    • Windows Vista 家用進階 64 位元版
    • Windows Vista 旗艦 64 位元版
    • Windows Vista 商用入門 64 位元版
  • Microsoft Windows Server 2003 Service Pack 2?應用於:
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows XP Professional x64 Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows XP Service Pack 3?應用於:
    • Microsoft Windows XP Home Edition (家用版)
    • Microsoft Windows XP Professional
關鍵字:?
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2661403
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