[ASP.NET] MS11-100安全性更新引發的異常
在去年底(2011)微軟發佈了一個安全性的重大更新『Microsoft Security Bulletin MS11-100』
,此重大更新是為修復ASP.NET一個重大資安弱點,該資安弱點詳情可參考scottgu的blog
,而就在最近卻遇上出現這樣的異常訊息:『物件目前的狀態,導致作業無效』,異常畫面
如下:
追查之下才發現MS11-100安全性的更新會做下列的設定調整
『Microsoft 安全性更新 MS11-100 會將 HTTP 要求中的表單金鑰、檔案和 JSON 裝載成員的最大
數量限制為 1000。因為此變更的緣故,ASP.NET 應用程式會拒絕具有超過 1000 個上述元素的要求。
發出上述種類要求的 HTTP 用戶端會遭到拒絕,而網頁瀏覽器中會出現錯誤訊息。錯誤訊息通常內含
HTTP 500 狀態碼。你可以每個應用程式為單位個別為其建立新限制。如需設定指示,請參閱<解決
方式>一節。』(引自:http://support.microsoft.com/kb/2661403)
因此當Request的成員數量例如欄位等,超出1000時,就會引發上面的異常,雖然大部份情況下可能不
太會有如此龐大的Request,但有時很難去預防使用者可能會發出這樣的Request或是真的需要這樣的需
求,因此若是有必要的話可以借由調整web.config的設定將數值依需求做調整,來讓程式運作正常,當
然若非必要也就不用去調整,畢竟會把預設限制為1000就是因安全性上的考量才做調整的。
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="1000" />
</appSettings>
參考資訊:
(1)http://support.microsoft.com/kb/2661403
(2)http://technet.microsoft.com/zh-tw/security/bulletin/ms11-100
(3)http://technet.microsoft.com/en-us/security/advisory/2659883
By No.18