SORU
30 Aralık 2011, Cuma


Nasıl gönderildi form değerleri sayısı sınırı değiştirebilir miyim?MS11 ASP.NET -100:

Microsoft son zamanlarda (12-29-2011) birkaç ciddi güvenlik açıkları için bir güncelleme yayınladı .NET Çerçeve. Düzeltmeleri MS11-100 tarafından sunulan geçici potansiyel bir DoS saldırısı karma tablo çarpışmalar içeren azaltır. Bu düzeltme SONRASI çok miktarda veri içeren sayfa sonları gibi görünüyor. Sayfalarda bizim durumumuzda, bu çok büyük bir onay kutusu listeleri var. Neden bu durumda olurdu?

Resmi olmayan bazı kaynaklar, MS11-100 geri gönderme öğeleri 500 sınırı yerleri gösterir gibi görünmektedir. Bu doğrular Microsoft bir kaynak bulamıyorum. Görünüm Durumu ve diğer özellikleri çerçevesinde bu sınır bazı yiyiyor biliyorum. Bu yeni sınır denetimleri, herhangi bir yapılandırma ayarı var mı? Uzak kutularını kullanarak değiştirebiliriz ama gayet iyi bir şekilde bizim durumumuza için çalışıyor. Ayrıca, diğer bazı kötü şeyler karşı korur çünkü yama uygulamak istiyoruz.

Unofficial source discussing the 500 limit:

Bülten DOS için bir sınır sağlayarak vektör saldırı giderir tek bir HTTP POST için gönderilen değişkenlerin sayısı istek. Varsayılan sınırı normal için yeterli olan 500. web uygulamaları, ama yine de saldırı olarak etkisiz hale getirmek için yeterince düşük Almanya'da güvenlik araştırmacılar tarafından açıklanmıştır.

EDİT: limit örnek 1000, 500 değil gibi görünüyor () ile Kaynak kodu Standart bir MVC uygulaması oluşturmak ve ana dizin görüntülemek için 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 patch önce çalıştı. Sonra işe yaramıyor. Hata:

[Invalidoperationexception: Operasyon geçerli akım nedeniyle değil nesnenin durumu.]
Sistem.Web.HttpValueCollection.()ThrowİfMaxHttpCollectionKeysExceeded 82 Sistem.Web.HttpValueCollection.(Byte[] bayt Kodlama) FillFromEncodedBytes 111
Sistem.Web.HttpRequest.() FillİnFormCollection 307

CEVAP
30 Aralık 2011, Cuma


Web bu ayarı eklemeyi deneyin.config. Ben sadece bu test .NET kod atmaz bu ayar ile ASP.NET MVC 2 projesi ile ve: 4.0

<appSettings>
  <add key="aspnet:MaxHttpCollectionKeys" value="1001" />
</appSettings>

Şimdi çalışmalıdır güvenlik güncelleştirmesini uyguladıktan sonra () sınırını değiştirmek için.


Henüz benim Makine Sanayi etmemiştim, Reflektör kullanarak HttpValueCollection sınıfı kontrol ettim, ve ThrowIfMaxHttpCollectionKeysExceeded yöntemi yoktu yani:

enter image description here

KB2656351 (güncelleme için .yükledim NET 4.0), Reflektör derlemeleri ve yöntemi yeniden ortaya çıktı:

enter image description here

Bu yöntem kesinlikle yeni. KullandımSökmeyeReflektör seçeneği ve koddan anladığım kadarıyla bir AppSetting denetler:

if (this.Count >= AppSettings.MaxHttpCollectionKeys)
{
  throw new InvalidOperationException();
}

Eğer web içinde değeri bulmak değil.yapılandırma dosyası, System.Web.Util.AppSettings.EnsureSettingsLoaded 1000 olarak ayarlayın (dahili statik bir sınıf):

 _maxHttpCollectionKeys = 0x3e8;

Ayrıca, Aleksey Gusarov bu ayarı iki gün önce: gelsin

Ve here Jonathan Ness (Güvenlik Geliştirme Müdürü) MSRC ve Pete Voss (Sr. Yanıt İletişim Yöneticisi, Güvenilir bilgi İşlem) ile Q&a resmi bir cevap

S: AppSettings.Yeni parametre MaxHttpCollectionKeys form girişlerini içerir?

Bir: Evet.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • happyjpy

    happyjpy

    22 AĞUSTOS 2009
  • Learn Math Tutorials

    Learn Math T

    20 Kasım 2011