gpt4 book ai didi

asp.net-mvc - ASP.NET MVC UpdateModel 易受黑客攻击?

转载 作者:行者123 更新时间:2023-12-04 16:23:55 26 4
gpt4 key购买 nike

我有一个类似于日历的 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));
}
}

最佳答案

您缺少有关“模型绑定(bind)安全性”的部分。您应该始终包含可由您的任何用户输入法更新的属性的白名单。

例如,来自 NerdDinner:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create( [Bind(Include="Title, Address")] Dinner dinner)
{

}

或者,如果您正在调用 UpdateModel,您可以创建一个允许属性的字符串数组,然后执行
UpdateModel(myObject, allowedProperties);

您可以锁定类本身,以便也只有某些属性是可更新的。
[Bind(Include="MyProp1,MyProp2,MyProp3")]
public partial class MyEntity { }

关于asp.net-mvc - ASP.NET MVC UpdateModel 易受黑客攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1506087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com