1

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

例如:

2 - Admin
3 - Member

假设1SuperAdmin. 如果我们DropDownList在 Asp.Net 中有一个并将其绑定到后面代码中的数据源,然后神秘地尝试更改 DropDownList 中的值,然后提交我们得到异常的表单EventValidation。但是在 Asp.Net MVC 中,如果我们对其进行编辑,肯定会因为它包含 Web。我能做些什么来防止我的 Web 应用程序中出现这种横切事物吗?

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

4

2 回答 2

1

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

这里的输入是指基于 URL 的参数、基于表单的参数、隐藏字段、Cookie 等。

于 2012-05-19T12:37:51.150 回答
1

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

编辑
遵循 UnhandleException 的响应: 特别是
在 MVC 中,您可以使用 Data Annotation 属性,使 mvc 引擎为您呈现客户端和服务器端验证
本教程解释了如何在您的 mvc 应用程序中使用属性验证

于 2012-05-19T12:37:58.030 回答