2010-02-28 56 views
4

我有一个DropDownList,我试图阻止它被用作攻击媒介。我是否可以假设用户无法实际更改DDL的值并回发到服务器?目前,我得到的,如果我尝试和改变数据包提交后抛出此ASP.NET错误消息:黑客DropDownList值

For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.

我是正确的思维,这是由于以诚信在ViewState散列被泄露?这可以绕过吗?

谢谢

回答

3

实际上,只要页面具有EnableEventValidation = true(尽管您可以在每个页面或web.config中禁用它,但这是默认值),您应该可以假定下拉列表选项尚未更改为客户端。如果新值被添加到您的下拉列表客户端,并发生回发,则会发生错误,除非您注册此新值以进行事件验证(http://odetocode.com/blogs/scott/archive/2006/03/21/asp-net-event-validation-and-invalid-callback-or-postback-argument-again.aspx

+0

看,这就是我的想法。我搞砸了DDL,但只能得到错误消息。任何人都可以确认一种方式或其他? 谢谢 – XSL 2010-02-28 14:06:26

+1

通常我会同意你不能相信来自客户端的内容(这是你设置asp.net验证器控件来验证客户端和服务器端的原因之一),但在这种情况下,你可以确定ddl只要启用了EventValidation,就不会被混淆。即使你试图验证你的ddl和回发事件服务器端,你也可能会做同样的事情,ASP.Net将EventValidation设置为true。 – 2010-02-28 15:07:41

3

不,你不能这样认为。

你应该总是认为所有的输入都是不可信的,并且适当地对待它(确保它是应该的,并且它是正确的类型,并且当前用户(或其他)有权访问它, 等等)。

+0

请提供证明,IE是证明成功攻击的概念验证 – 2015-04-02 17:38:17