我正在开发一个项目,我刚刚发现可以编辑隐藏字段的值。所以这给我带来了安全问题。 想象一下,我有一个表格来编辑个人信息。目前,表单具有隐藏输入,该输入具有主键的值。因此,如果某人更改了该值,则可以更新其他人的数据。
我已在此处和Google上查看,并在https://mvcsecurity.codeplex.com/上找到了可能的解决方案。但不幸的是,最新版本的ASP.NET MVC无法使用它。 所以我想知道是否有人知道正确的方法来防止这种情况。
答案 0 :(得分:5)
简短的回答是,永远不要相信来自客户的数据!
您永远不应该信任来自客户端浏览器的数据。它可以由最终用户更改。所以不要简单地相信价值。 始终在服务器端进行必要的验证,以确保数据/操作有效。
在您的特定情况下,提交表单时,您应该检查隐藏字段的值(正在编辑的记录的主键值)对于要编辑的当前用户是否有效。根据您的系统用户权限/角色系统,您可以执行一些if
检查,并确定当前用户是否有权使用来自客户端的值执行此操作。
答案 1 :(得分:0)
一种解决方案是在将主键放入隐藏变量之前对其进行加密。这是很多站点使用的方法,尽管加密的var通常都在查询字符串中。