Tóm tắt
Microsoft Cập Nhật bảo mật MS11-100 giới hạn số tối đa dạng phím, tệp và JSON viên 1000 trong một yêu cầu HTTP. Vì sự thay đổi này, ứng dụng ASP.NET từ chối yêu cầu có hơn 1000 của các yếu tố. HTTP khách hàng làm cho các loại yêu cầu sẽ bị từ chối và thông báo lỗi sẽ xuất hiện trong trình duyệt web. Thông báo lỗi thường sẽ có một mã trạng thái HTTP 500. Giới hạn mới này có thể được cấu hình theo một ứng dụng. Vui lòng xem phần "Giải pháp" cho cấu hình hướng dẫn.
Triệu chứng
ASP.NET yêu cầu có nhiều phím mẫu, tải trọng JSON hoặc tập tin nhận được phản hồi lỗi từ máy chủ. Nhật ký ứng dụng trên máy chủ đã nhập cảnh báo với một nguồn có một phiên bản cụ thể của ASP.NET và ID sự kiện 1309. Nhật ký sự kiện chứa một trong các thông báo sau:
Thông báo 1:
Ứng dụng thông tin: ứng dụng miền: LM/W3SVC/1/gốc/< miền ứng dụng > mức độ tin cậy: vừa ứng dụng ảo đường dẫn: < VDIR đường dẫn > ứng dụng đường dẫn: tên < ứng dụng đường dẫn > máy: < tên máy tính > xử lý thông tin: quá trình ID: 0001 trình tên: w3wp.exe tên tài khoản: thông tin ngoại lệ APPPOOL\DefaultAppPool IIS: loại ngoại lệ: thông báo ngoại lệ HttpException: mẫu URL mã hóa dữ liệu không hợp lệ. tại System.Web.HttpRequest.FillInFormCollection () ở System.Web.HttpRequest.get_Form () ở System.Web.HttpRequest.get_HasForm () ở System.Web.UI.Page.GetCollectionBasedOnMethod (Boolean dontReturnNull) tại System.Web.UI.Page.DeterminePostBackMode () ở System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Thông báo 2:
Ứng dụng thông tin: ứng dụng miền: LM/W3SVC/1/gốc/< miền ứng dụng > mức độ tin cậy: vừa ứng dụng ảo đường dẫn: < VDIR đường dẫn > ứng dụng đường dẫn: tên < ứng dụng đường dẫn > máy: < tên máy tính > xử lý thông tin: quá trình ID: 0001Process tên: w3wp.exe tên tài khoản: thông tin ngoại lệ APPPOOL\DefaultAppPool IIS: loại ngoại lệ: thông báo ngoại lệ InvalidOperationException: hoạt động không hợp lệ do trạng thái hiện tại của đối tượng. tại System.Web.HttpRequest.FillInFilesCollection () ở System.Web.HttpRequest.get_Files () ở FileUpload.Page_Load (Object sender, EventArgs e) tại System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp đối tượng o, đối tượng t, EventArgs e) System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object sender, EventArgs e) tại System.Web.UI.Control.OnLoad (EventArgs e) tại System.Web.UI.Control.LoadRecursive () ở System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint
Thông báo 3:
Ứng dụng thông tin: ứng dụng miền: LM/W3SVC/1/gốc/< miền ứng dụng > mức độ tin cậy: vừa ứng dụng ảo đường dẫn: < VDIR đường dẫn > ứng dụng đường dẫn: < ứng dụng đường dẫn > máy tên: < tên máy tính > xử lý thông tin: quá trình ID: 0001Process tên: w3wp.exe tên tài khoản: thông tin ngoại lệ APPPOOL\DefaultAppPool IIS: loại ngoại lệ: thông báo ngoại lệ InvalidOperationException: hoạt động không hợp lệ do trạng thái hiện tại của đối tượng. tại System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary (Int32 sâu) tại System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal (Int32 sâu) tại System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize (chuỗi nhập, Int32 depthLimit JavaScriptSerializer serializer) tại System.Web.Script.Serialization.JavaScriptSerializer.Deserialize (JavaScriptSerializer serializer chuỗi nhập, gõ gõ, Int32 depthLimit) tại System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject (chuỗi nhập) tại Failing.Page_Load (Object sender, EventArgs e) System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp đối tượng o, đối tượng t, EventArgs e) tại System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object sender, EventArgs e) tại System.Web.UI.Control.OnLoad (EventArgs e) tại System.Web.UI.Control.LoadRecursive () ở System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Tệp nhật ký IIS Hiển thị mục giống như sau:
2011-01-01 00:00:00:: 1 bài /machine/default.aspx - 80 -:: 1-500 0 0 187
Nguyên nhân
Bảo mật của Microsoft Cập Nhật bảo mật bản tin MS11-100 địa chỉ thay đổi mặc định số lượng tối đa dạng phím, tệp và thành viên JSON ASP.NET sẽ chấp nhận yêu cầu 1000. Thay đổi này được thực hiện để khắc phục các lỗ hổng từ chối dịch vụ Microsoft security bulletin MS11-100 tài liệu.
Giải pháp
Ứng dụng đạt tới giới hạn này dạng khoá hoặc tập tin có thể sửa đổi ASP.NET appSetting aspnet:MaxHttpCollectionKeys, như sau trong tệp cấu hình một ứng dụng ASP.NET. Thiết đặt này giải quyết lỗi thông báo lỗi và 1 thông báo 2 "Triệu chứng" phần.
<configuration><appSettings><add key="aspnet:MaxHttpCollectionKeys" value="1000" /></appSettings></configuration>
Lưu ý Nếu bạn đang sử dụng ASP.NET 1.1 trên x86 dựa trên hệ thống, thiết đặt được điều chỉnh bằng cách thêm một giá trị khoá đăng ký sau:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Nếu bạn đang sử dụng ASP.NET 1.1 trên x64 dựa trên hệ thống, thiết đặt được điều chỉnh bằng cách thêm một giá trị khoá đăng ký sau:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
Ứng dụng đạt giới hạn này cho JSON dữ liệu có thể thay đổi ASP.NET appSetting aspnet:MaxJsonDeserializerMembers, như sau trong tệp cấu hình một ứng dụng ASP.NET. Thiết đặt này giải quyết lỗi phần thư 3 "Triệu chứng".
<configuration><appSettings><add key="aspnet:MaxJsonDeserializerMembers" value="1000" /></appSettings></configuration>
Lưu ý Tăng giá trị này trên các thiết đặt mặc định tăng nhạy cảm máy chủ của bạn cho các lỗ hổng từ chối dịch vụ được đề cập trong bản tin bảo mật MS11-100.
Tham khảo
Để biết thêm thông tin về bảo mật bản tin MS11-100, hãy xem bài viết TechNet sau đây:
Microsoft Security Bulletin MS11-100 - quan trọngĐể biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2638420 MS11-100: Lỗ hổng trong .NET Framework có thể cho phép nâng cao đặc quyền: 29 tháng 12 năm 2011