我有一个类似日历的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));
}
}发布于 2009-10-01 19:59:51
有一些UpdateModel重载需要更新命名属性的字符串数组。这些重载将仅更新命名属性。
可能还有其他更简单/更具声明性的方法来实现这一点,我不是MVC数据绑定方面的专家。
https://stackoverflow.com/questions/1506087
复制相似问题