J'ai une application ASP.NET MVC qui ressemble à un calendrier. Comme dans l'exemple de NerdDinner, je mets à jour les résultats de ma page d'édition en utilisant UpdateMethod()ASP.NET MVC UpdateModel vulnérable au piratage?
Dans mon application, certains événements sont entièrement personnalisables et certains sont seulement partiellement personnalisables. Même si le formulaire d'édition pour modifier les événements partiellement personnalisables n'a que ces champs disponibles, il est évident que quelqu'un pourrait créer son propre formulaire avec les données manquantes et les publier sur mon site. S'ils le font, qu'est-ce qui empêchera quelqu'un de changer tout ou partie des champs? Pire, et s'ils essayaient de changer l'identifiant (clé primaire)?
Il semble que UpdateModel() soit vulnérable au piratage très basique. Mes peurs sont-elles légitimes ou y a-t-il quelque chose qui me manque?
// 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));
}
}
mode facile/sans échec = créer des modèles de formulaire (in), puis mapper ceux-ci à vos entités via Automapper. – mxmissile