我有一个DropDownList,我试图阻止它被用作攻击媒介。我可以假设用户无法实际更改DDL的值并回发到服务器吗?目前,如果我在提交后尝试更改数据包,则会抛出此ASP.NET错误消息:
For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.
我是否正确地认为这是由于视图状态哈希中的完整性受损?这可以被绕过吗?
由于
答案 0 :(得分:3)
不,你不能这么认为。
您应该始终认为所有输入都是不受信任的,并对其进行适当处理(确保它应该是什么,并且它是正确的类型,并且当前用户(或其他)可以访问它,等等。)
答案 1 :(得分: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)