相关疑难解决方法(0)

ASP.NET MS11-100:如何更改已发布表单值的最大数量限制?

Microsoft最近(12-29-2011)发布了一个更新,以解决.NET Framework中的几个严重安全漏洞.MS11-100引入的修复之一暂时缓解了涉及哈希表冲突的潜在DoS攻击.看来此修复程序会破坏包含大量POST数据的页面.在我们的例子中,在具有非常大的复选框列表的页面上.为什么会这样呢?

一些非官方消息来源似乎表明MS11-100对回发项目的限制为500.我找不到确认这一点的Microsoft源代码.我知道View State和其他框架功能会占用这个限制.是否有任何配置设置来控制此新限制?我们可以不使用复选框,但它对我们的特定情况很有效.我们也想应用补丁,因为它可以防止其他一些令人讨厌的事情.

讨论500限制的非官方消息来源:

该公告通过限制可以为单个HTTP POST请求提交的变量数来修复DOS攻击向量.默认限制为500,对于正常的Web应用程序来说应该足够了,但仍然足够低以抵消德国安全研究人员所描述的攻击.

编辑:带有限制示例的源代码(看起来是1,000,而不是500)创建标准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>
}
Run Code Online (Sandbox Code Playgroud)

此代码在补丁之前有效.以后它不起作用.错误是:

[InvalidOperationException:由于对象的当前状态,操作无效.]
System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded()+82 System.Web.HttpValueCollection.FillFromEncodedBytes(Byte [] bytes,Encoding encoding)+111
System.Web. HttpRequest.FillInFormCollection()+307

asp.net post ms11-100

196
推荐指数
2
解决办法
6万
查看次数

由于回发期间对象的当前状态错误,"操作无效"

我有一个运行良好的aspx页面,但突然我收到错误"由于对象的当前状态,操作无效".每当回发完成.

堆栈跟踪是:

在System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded()
在System.Web.HttpValueCollection.FillFromEncodedBytes(字节[]字节,编码方式进行编码)
在System.Web.HttpRequest.FillInFormCollection()

有人可以帮忙吗?

asp.net

166
推荐指数
4
解决办法
19万
查看次数

为特定页面指定MaxHttpCollectionKeys?

我想知道是否有办法改变特定页面的这个值,而不是为整个项目设置它.我们正在达到极限,但仅限于几页.我们的项目使用的是.NET 3.5.

对于那些不知道这个变量是什么的人来说,可以解决这个问题:http: //support.microsoft.com/kb/2661403

基本上,如果您有很多表单键(超过1000),则在发回页面时会出现异常.您可以通过在web.config中指定来解决此问题:

关于此限制存在几个问题,例如: 在回发期间"操作无效,因为对象的当前状态"错误

但是,我没有看到任何与为特定页面设置此相关的内容.

asp.net web-config exception

4
推荐指数
1
解决办法
3882
查看次数

标签 统计

asp.net ×3

exception ×1

ms11-100 ×1

post ×1

web-config ×1