首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVC Razor中的表单安全性

MVC Razor中的表单安全性
EN

Stack Overflow用户
提问于 2015-10-12 10:26:03
回答 1查看 980关注 0票数 0

我在我的项目MVC剃须刀C#中有两个表单。

View1:那显示了所有的记录。点击特定的记录就可以编辑页面。 View2:它在表单中显示选定的记录,以便进行更新。

因此,当用户提交form...that时,Controller...Controller操作方法有一个View参数,该参数从视图中的隐藏字段填充ID属性。

有一种倾向,即有人通过浏览器的检查元素故意更改html中的ID,而数据可能会出现错误的记录.

解决此问题的一种方法是从视图模型传递加密的值。但是,用户仍然可以从另一条记录中交换加密的值,并可以在提交表单之前通过in元素将加密的ID值放入html中的另一条记录中。

我希望我能澄清这个问题。阅读时仍有任何问题,请让我再次澄清。

请提出解决办法。

EN

回答 1

Stack Overflow用户

发布于 2015-10-12 13:33:37

处理这个问题的最好方法是不要发布id。相反,使用URL的id部分,然后如果它被更改了,那么将使用一个完全不同的资源:

代码语言:javascript
复制
[HttpPost]
public ActionResult Edit(int id, Foo model)
{
    var foo = db.Foos.Find(id);
    if (foo == null)
    {
        return new HttpNotFoundResult();
    }

    if (ModelState.IsValid)
    {
        // map values from model (posted data) to instance from DB
        db.Entry(foo).State = EntityState.Modified;
        db.SaveChanges();
    }

    return View(model);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33078835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档