我还有另一个相关的问题没有答案:my stackoverflow question
但是,如果我设置EnableEventValidation="false"
,我的问题就会消失。
现在我的问题是,如果我将其设置为MasterPage
,这会产生什么重要意义吗?
在将此设置为false
的所有参考文献中,没有人提出除MSDN之外的安全问题。
有什么建议吗?
答案 0 :(得分:15)
删除事件验证会减少应用程序中的安全检查点数量。问题是,这有关系吗?
重要的一个简单示例
用户有两个选项,因为他们是网站上的“银牌”成员。他们制定了一个实际提交选项#3的请求,并获得了他们没有支付的“黄金”特权。
可能无关紧要的例子
用户可以制作请求,声明他们居住在不在页面下拉列表中的国家/地区。您正在运行一个事务性关系数据库,该数据库使用外键约束捕获此数据库。用户收到错误,没有数据持久或损坏。
我建议让您的数据库执行验证吗?当然不是。但在这个例子中,没有造成任何伤害。
如果有疑问,请假设 重要,并且有人会找到破解代码的方法。
理想方法
首先,确定事件验证失败的原因。根据我的经验,这通常是由于滥用页面/控件设计造成的。在15年以上的.NET开发中,我只见过事件验证打破了控件的设计。这种控制非常复杂,最终不得不重写。换句话说,如果事件验证导致控件出现问题,您可能应该重新考虑控件的设计,而不是禁用事件验证。
最后:
从服务器端识别并验证关键业务规则,并独立于ASP.NET。不要依赖框架来完成你的工作;很容易认为安全性是“处理”的,并在设计中留下了一个漏洞。