結論

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 日

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?

感謝您的意見反應!

×