Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 隐藏字段的完整性:Asp.NET mvc_Asp.net Mvc_Asp.net Mvc 2_Asp.net Mvc 3_Hidden Field - Fatal编程技术网

Asp.net mvc 隐藏字段的完整性:Asp.NET mvc

Asp.net mvc 隐藏字段的完整性:Asp.NET mvc,asp.net-mvc,asp.net-mvc-2,asp.net-mvc-3,hidden-field,Asp.net Mvc,Asp.net Mvc 2,Asp.net Mvc 3,Hidden Field,我们一直在使用asp.NETMVC进行开发。有时,我们需要在表单上放置一些隐藏字段,这些字段由modelbinder推送到模型中(如预期的那样)。现在,用户可以使用firebug或其他实用程序轻松地调整表单。隐藏字段的目的主要是按原样向服务器提供一些信息,这些信息不需要更改 例如,在我的编辑员工表单中,我可以将EmployeeID放在隐藏字段中,但如果用户在隐藏字段中更改EmployeeID,则数据库中将更新错误的员工。在这种情况下,我们如何保持隐藏字段的完整性。您需要强制执行安全性,以确保进行

我们一直在使用asp.NETMVC进行开发。有时,我们需要在表单上放置一些隐藏字段,这些字段由modelbinder推送到模型中(如预期的那样)。现在,用户可以使用firebug或其他实用程序轻松地调整表单。隐藏字段的目的主要是按原样向服务器提供一些信息,这些信息不需要更改


例如,在我的编辑员工表单中,我可以将EmployeeID放在隐藏字段中,但如果用户在隐藏字段中更改EmployeeID,则数据库中将更新错误的员工。在这种情况下,我们如何保持隐藏字段的完整性。

您需要强制执行安全性,以确保进行修改的人员具有这样做的权限。我还通常将id放在URL中,而不是隐藏字段中,依靠安全性确保人们不会修改他们不应该修改的内容。如果他们在手动更改id时确实有修改项目的权限,那么应该不会有问题。重要的是确保一个人不能手动更改id,也不能访问他们不应该访问的内容。强制服务器端权限可以解决此问题。您可以通过将角色与authorized属性结合使用来轻松实现这一点

如果用户在中更改employeeID 隐藏字段,将显示错误的员工 在数据库中更新

这是你网站上的一个主要安全漏洞。在web开发的所有工作中,无论某人的代码有多聪明,或者你认为只要用户不做任何事情,你就可以了,记住一条金科玉律:永远不要隐式信任从客户端接收的数据

要修改网站中的任何内容,用户必须登录。(对吗?)因此,在用户试图向网站发布表单(尤其是可以修改数据的表单)时,请仔细检查提交表单的用户是否有权对指定的数据执行请求的操作


理想情况下,每个不完全公开和不安全的操作都应该进行服务器端权限检查。永远不要相信客户机发送给您的信息。

一种可能的替代方法是将静态的一次性信息存储在服务器上的TempData中,而不要将其传递给可能被篡改的客户机。请记住,默认情况下,TempData使用Session并有其自身的局限性,但它也可以是一个选项。

在更新模型之前,始终可以执行服务器端验证。确保登录的用户有权更新指定的员工。是的,检查的目的是确保每个人都访问或修改属于他的记录,但我仍然不希望用户手动更改ID并损坏数据库中的一条记录。