Microsoft son zamanlarda (12-29-2011) .NET Framework'teki birçok ciddi güvenlik açığını gidermek için bir güncelleştirme yayımladı. MS11-100'ün getirdiği düzeltmelerden biri, karma tablo çarpışmalarını içeren potansiyel bir DoS saldırısını geçici olarak azaltır . Bu düzeltme, çok sayıda POST verisi içeren sayfaları kırar gibi görünüyor. Bizim durumumuzda, çok büyük onay kutusu listeleri olan sayfalarda. Neden böyle olsun?
Bazı resmi olmayan kaynaklar, MS11-100'ün geri gönderme öğelerine 500 sınırı koyduğunu gösteriyor. Bunu doğrulayan bir Microsoft kaynağı bulamıyorum. View State ve diğer çerçeve özelliklerinin bu sınırın bir kısmını yediğini biliyorum. Bu yeni limiti kontrol eden herhangi bir yapılandırma ayarı var mı? Onay kutularını kullanmaktan vazgeçebiliriz, ancak özel durumumuz için oldukça iyi çalışır. Yamayı da uygulamak istiyoruz çünkü diğer kötü şeylere karşı koruyor.
500 sınırını tartışan resmi olmayan kaynak:
Bülten, tek bir HTTP POST isteği için gönderilebilen değişken sayısı için bir sınır sağlayarak DOS saldırısı vektörünü düzeltir. Varsayılan sınır, normal web uygulamaları için yeterli olması gereken 500'dür, ancak yine de Almanya'daki güvenlik araştırmacıları tarafından açıklanan saldırıyı etkisiz hale getirecek kadar düşüktür.
DÜZENLEME: Limit örneği olan kaynak kodu (500 değil, 1.000 olarak görünüyor) Standart bir MVC uygulaması oluşturun ve ana dizin görünümüne aşağıdaki kodu ekleyin:
@using (Html.BeginForm())
{
<fieldset class="fields">
<p class="submit">
<input type="submit" value="Submit" />
</p>
@for (var i = 0; i < 1000; i++)
{
<div> @Html.CheckBox("cb" + i.ToString(), true) </div>
}
</fieldset>
}
Bu kod düzeltme ekinden önce çalıştı. Sonra işe yaramıyor. Hata:
[InvalidOperationException: Nesnenin geçerli durumu nedeniyle işlem geçerli değil.]
System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded () +82 System.Web.HttpValueCollection.FillFromEncodedBytes (Bayt [] bayt, = Kodlama1) kodlama
. HttpRequest.FillInFormCollection () +307