나는 캘린더와 유사한 ASP.NET MVC 애플리케이션을 가지고있다. NerdDinner 예제에 따라 UpdateMethod()를 사용하여 편집 페이지의 결과를 업데이트합니다.ASP.NET MVC UpdateModel이 해킹에 취약합니까?
내 앱에서 특정 이벤트는 완벽하게 사용자 정의 가능하며 특정 이벤트는 부분적으로 만 사용자 정의 할 수 있습니다. 부분적으로 사용자 정의 가능한 이벤트를 편집하기위한 편집 양식은 해당 필드 만 사용할 수 있지만 분명히 누락 된 데이터로 자신의 양식을 만들고 내 사이트에 게시 할 수 있습니다. 그렇다면 누군가가 어떤/모든 분야를 변경하지 못하게해야합니까? 더 나쁜 경우, 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));
}
}
쉽고 안전 모드 = 양식 (in) 모델을 만든 다음 Automapper를 통해 해당 모델을 귀하의 엔티티에 매핑하십시오. – mxmissile