Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Çok fazla form anahtarı, dosya veya JSON yük üyelerine sahip ASP.NET isteği, özel bir duruma yol açarak başarısız oluyor

Windows XP desteği sona erdi

Microsoft, Windows XP desteğini 8 Nisan 2014'te sona erdirdi. Bu değişiklik yazılım güncelleştirmelerinizi ve güvenlik seçeneklerinizi etkiledi. Bunun sizin için ne anlama geldiğini ve korunmaya nasıl devam edebileceğinizi öğrenin.

Windows Server 2003 desteği 14 Temmuz 2015'te sona erdi

Microsoft, Windows Server 2003 desteğini 14 Temmuz 2015'te sona erdirdi. Bu değişiklik yazılım güncelleştirmelerinizi ve güvenlik seçeneklerinizi etkiledi. Bunun sizin için ne anlama geldiğini ve korunmaya nasıl devam edebileceğinizi öğrenin.

Özet
Microsoft güvenlik güncelleştirmesi MS11-100; form anahtarı, dosya ve JSON üyelerini HTTP isteğinde 1000 olarak sınırlar. Bu değişiklik nedeniyle, ASP.NET uygulamaları bu öğelerden 1000'den fazlasını içeren istekleri reddeder. Bu tür istekler yapan HTTP istemcileri reddedilir ve web tarayıcısında bir hata iletisi görünür. Hata iletisinde genellikle HTTP 500 durum kodu vardır. Bu yeni sınır, her uygulama için ayrı ayrı yapılandırılabilir. Yapılandırma yönergeleri için lütfen "Çözüm" bölümüne bakın.


Belirtiler
Çok fazla form anahtarı, dosya veya JSON yüküne sahip ASP.NET istekleri, sunucudan hata yanıtı alır. Sunucudaki Uygulama günlüğünde ASP.NET'in belirli bir sürümü olan Kaynak'a sahip bir Uyarı girdisi ve Olay Kimliği 1309 bulunur. Olay günlüğü aşağıdaki iletilerden birini içerir: 


İleti 1:
Uygulama bilgileri:
    Uygulama etki alanı: /LM/W3SVC/1/ROOT/<App Domain>
    Güven düzeyi: Orta
    Uygulama Sanal Yolu: <VDIR Path>
    Uygulama Yolu: <App Path>
    Makine adı: <Machine Name>
İşlem bilgileri:
    İşlem Kimliği: 0001
    İşlem adı: w3wp.exe
    Hesap adı: IIS APPPOOL\DefaultAppPool

Özel durum bilgisi:
    Özel durum türü: HttpException
    Özel durum iletisi: URL olarak kodlanmış form verileri geçerli değil.
   şu öğede: System.Web.HttpRequest.FillInFormCollection()
   şu öğede: System.Web.HttpRequest.get_Form()
   şu öğede: System.Web.HttpRequest.get_HasForm()
   şu öğede: System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
   şu öğede: System.Web.UI.Page.DeterminePostBackMode()
   şu öğede: System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 


İleti 2:
Uygulama bilgileri:
    Uygulama etki alanı: /LM/W3SVC/1/ROOT/<App Domain>
    Güven düzeyi: Orta
    Uygulama Sanal Yolu: <VDIR Path>
    Uygulama Yolu: <App Path>
    Makine adı: <Machine Name>

İşlem bilgileri:
    İşlem Kimliği: 0001
    İşlem adı: w3wp.exe
    Hesap adı: IIS APPPOOL\DefaultAppPool

Özel durum bilgisi:
    Özel durum türü: InvalidOperationException
    Özel durum iletisi: Nesnenin geçerli durumu nedeniyle işlem geçersiz.
   şu öğede: System.Web.HttpRequest.FillInFilesCollection()
   şu öğede: System.Web.HttpRequest.get_Files()
   şu öğede: FileUpload.Page_Load(Object sender, EventArgs e)
   şu öğede: System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
   şu öğede: System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
   şu öğede: System.Web.UI.Control.OnLoad(EventArgs e)
   şu öğede: System.Web.UI.Control.LoadRecursive()
   şu öğede: System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint

İleti 3:
Uygulama bilgileri:
    Uygulama etki alanı: /LM/W3SVC/1/ROOT/<App Domain>
    Güven düzeyi: Orta
    Uygulama Sanal Yolu: <VDIR Path>
    Uygulama Yolu: <App Path>
    Makine adı: <Machine Name>

İşlem bilgileri:
    İşlem Kimliği: 0001
    İşlem adı: w3wp.exe
    Hesap adı: IIS APPPOOL\DefaultAppPool

Özel durum bilgisi:
    Özel durum türü: InvalidOperationException
    Özel durum iletisi: Nesnenin geçerli durumu nedeniyle işlem geçersiz.
   şu öğede: System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth)
   şu öğede: System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)
   şu öğede: System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)
   şu öğede: System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)
   şu öğede: System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input)
   şu öğede: Failing.Page_Load(Object sender, EventArgs e)
   şu öğede: System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
   şu öğede: System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
   şu öğede: System.Web.UI.Control.OnLoad(EventArgs e)
   şu öğede: System.Web.UI.Control.LoadRecursive()
   şu öğede: System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 


IIS günlük dosyası aşağıdakine benzer bir girdi gösterir:
2011-01-01 00:00:00 ::1 POST /machine/default.aspx - 80 - ::1 - 500 0 0 187




Neden
MS11-100 güvenlik bülteninde belirtilen Microsoft güvenlik güncelleştirmesi, ASP.NET'in bir istekte kabul edeceği en fazla form anahtarı, dosya ve JSON üyelerinin varsayılan sayısını 1.000 olarak değiştirir. Bu değişiklik, Microsoft MS11-100 güvenlik bülteninin belgelediği Hizmet Reddi güvenlik açığını gidermek için yapılmıştır.


Çözüm
Form anahtarları veya dosyalara yönelik bu sınıra ulaşan uygulamalar, ASP.NET appSetting aspnet:MaxHttpCollectionKeys öğesini ASP.NET uygulamasının yapılandırma dosyasında aşağıda gösterildiği gibi değiştirebilir. Bu ayar "Belirtiler" bölümündeki hata iletisi 1 ve hata iletisi 2'yi giderir. 
<configuration><appSettings><add key="aspnet:MaxHttpCollectionKeys" value="1000" /></appSettings></configuration>


Not x86 tabanlı bir sistemde ASP.NET 1.1 kullanıyorsanız, ayar aşağıdaki kayıt defteri anahtarına DWORD değeri eklenerek belirlenir:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
x64 tabanlı bir sistemde ASP.NET 1.1 kullanıyorsanız, ayar aşağıdaki kayıt defteri anahtarına DWORD değeri eklenerek belirlenir:

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



JSON yüklerine yönelik bu sınıra ulaşan uygulamalar, ASP.NET appSetting aspnet:MaxJsonDeserializerMembers öğesini bir ASP.NET uygulamasının yapılandırma dosyasında aşağıda gösterildiği gibi değiştirebilir. Bu ayar, "Belirtiler" bölümündeki hata iletisi 3'ü hedef alır.
<configuration><appSettings><add key="aspnet:MaxJsonDeserializerMembers" value="1000" /></appSettings></configuration>



Not Bu değeri varsayılan ayarın üzerine çıkarmak, sunucunuzun MS11-100 güvenlik bülteninde açıklanan Hizmet Reddi güvenlik açığına karşı olan hassasiyetini artırır.


Referanslar
Güvenlik bülteni MS11-100 hakkında daha fazla bilgi için, aşağıdaki TechNet makalesine bakın: Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
2638420 MS11-100: .NET Framework'deki güvenlik açığı ayrıcalık yükselmesine izin verebilir: 29 Aralık 2011
Özellikler

Makale No: 2661403 - Son İnceleme: 11/29/2012 14:37:00 - Düzeltme: 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
Geri bildirim
r="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">