カレンダーのような 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));
}
}