微软最近(12-29-2011)发布了一个更新来解决.NET Framework中的几个严重的安全漏洞。 MS11-100引入的修复之一暂时减轻了涉及散列表冲突的潜在DoS攻击。 看来这个修补程序会中断包含大量POST数据的页面。 在我们的例子中,在具有非常大的checkbox列表的页面上。 为什么会这样呢? 一些非官方消息来源似乎表明,MS11-100对回发项目的限制是500。 我无法find确认这一点的微软源代码。 我知道,视图状态和其他框架function吃了一些这个限制。 是否有任何configuration设置来控制这个新的限制? 我们可以切换使用checkbox,但它对我们的特定情况非常有效。 我们也想要应用这个补丁,因为它可以防止其他一些讨厌的东西。 讨论500限制的非官方来源: 该公告修复了DOS攻击vector,通过提供一个HTTP POST请求可以提交的variables数量的限制。 默认限制是500,对于正常的Web应用程序来说应该足够了,但是仍然足够低以抵消德国安全研究人员所描述的攻击。 编辑:源代码与限制(似乎是1,000,而不是500)的示例创build一个标准的MVC应用程序,并将下面的代码添加到主索引视图: @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> } 此代码在补丁之前工作。 它以后不工作。 错误是: [InvalidOperationException:由于对象的当前状态,操作无效。] System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded()+82 System.Web.HttpValueCollection.FillFromEncodedBytes(Byte [] […]