我有一个类似于日历的 ASP.NET MVC 应用程序。根据 NerdDinner 示例,我正在使用 UpdateMethod() 更新编辑页面的结果
在我的应用程序中,某些事件是完全可定制的,而某些事件只是部分可定制的。尽管用于编辑部分可自定义事件的编辑表单只有这些字段可用,但显然有人可以使用丢失的数据创建自己的表单并发布到我的网站。如果他们这样做,是什么阻止某人更改任何/所有字段?更糟糕的是,如果他们试图更改 id(主键)怎么办?
感觉 UpdateModel() 很容易受到非常基本的黑客攻击。我的恐惧是合理的还是我错过了什么?
// POST: /MyEvents/Edit/2
[AcceptVerbs(HttpVerbs.Post), Authorize]
public ActionResult Edit(int id, FormCollection formValues)
{
MyEvent myevent = eventRepository.GetMyEvent(id);
try
{
UpdateModel(myevent);
eventRepository.Save();
return RedirectToAction("Details", new { id = myevent.MyEventId });
}
catch
{
ModelState.AddRuleViolations(myevent.GetRuleViolations());
return View(new MyEventFormViewModel(myevent));
}
}