EnableEventValidation =“false” - 一个好主意?

时间:2012-02-01 23:02:58

标签: c# asp.net

  

可能重复:
  purpose for <pages enableEventValidation=“false”>

我还有另一个相关的问题没有答案:my stackoverflow question

但是,如果我设置EnableEventValidation="false",我的问题就会消失。

现在我的问题是,如果我将其设置为MasterPage,这会产生什么重要意义吗?

在将此设置为false的所有参考文献中,没有人提出除MSDN之外的安全问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:15)

删除事件验证会减少应用程序中的安全检查点数量。问题是,这有关系吗?

重要的一个简单示例

用户有两个选项,因为他们是网站上的“银牌”成员。他们制定了一个实际提交选项#3的请求,并获得了他们没有支付的“黄金”特权。

可能无关紧要的例子

用户可以制作请求,声明他们居住在不在页面下拉列表中的国家/地区。您正在运行一个事务性关系数据库,该数据库使用外键约束捕获此数据库。用户收到错误,没有数据持久或损坏。

我建议让您的数据库执行验证吗?当然不是。但在这个例子中,没有造成任何伤害。

如果有疑问,请假设 重要,并且有人会找到破解代码的方法。

理想方法

首先,确定事件验证失败的原因。根据我的经验,这通常是由于滥用页面/控件设计造成的。在15年以上的.NET开发中,我只见过事件验证打破了控件的设计。这种控制非常复杂,最终不得不重写。换句话说,如果事件验证导致控件出现问题,您可能应该重新考虑控件的设计,而不是禁用事件验证。

最后:

从服务器端识别并验证关键业务规则,并独立于ASP.NET。不要依赖框架来完成你的工作;很容易认为安全性是“处理”的,并在设计中留下了一个漏洞。