防止Firebug中的HTML更改

时间:2012-05-19 12:30:05

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-4.0

假设我有一个显示DropDown的个人资料页面,1个管理员用户可以更改不同用户的角色。

例如:

2 - Admin
3 - Member

假设1适用于SuperAdmin。如果我们在Asp.Net中有DropDownList并将其绑定到后面的代码中的数据源,然后神秘地尝试更改DropDownList中的值,然后提交表单,我们会因EventValidation而获得异常。但是在Asp.Net MVC中,如果我们编辑它肯定会因为它包含网络。我可以采取哪些措施来阻止我的网络应用程序中出现这种交叉问题?

我可以做的一件事就是检查表单何时发布以查看发布的值是2还是3,如果没有显示某些消息,例如“您是否正在尝试破解”。还有更好的选择吗?

2 个答案:

答案 0 :(得分:1)

不要依赖客户端验证。为每个输入构建验证器。将一组验证器放在应用程序的服务器端。如果客户端有验证器,请确保在服务器端也实现相同的验证器。

此处输入表示基于URL的参数,基于表单的参数,隐藏字段,Cookie ets。

答案 1 :(得分:1)

您提到的解决方案(检查服务器)是正确的解决方案,以防止任何类型的网站上的此类黑客攻击。
使用萤火虫不是"欺骗"的唯一选择。基于javascript的验证。它也可以用任何基本的嗅探器工具完成,例如fiddler,它可以帮助潜在的黑客分析发布的数据到你的网站,以他想要的任何方式改变它,然后再次发布,使用浏览器或他自己的网络工具。
我通常在所有场景中都使用验证(脚本和服务器端),而在我看来,客户端验证的主要目的是防止回发到服务器(这会使正常用户烦恼)已经告诉客户端,他做错了什么。
然而,这样的验证永远不能足够保证数据在服务器上是自动受信任的,因为它太容易修改javascript /发布的数据,以覆盖它们。

修改
在UnhandleException的resposne之后:
在MVC中,您可以使用Data Annotation属性,使mvc引擎呈现客户端和服务器端验证
This tutorial explains how do use the attributes validation in ur mvc apps