MVC.NET 如何在编辑后确保提交表单安全

MVC.NET how to secure submitting forms after edit

当我想提交一个表单来保存编辑过的记录时,我应该将它的 Id 传递给控制器​​。然后客户端(或攻击者)可能会更改我不想更改的表单上的某些信息(例如此 Id)。我可以创建一个散列隐藏字段来检查只读字段是否未更改,并在将其发布到控制器时对其进行验证。 对于这个问题还有其他好的做法吗?

谢谢

A​​ntiForgeryToken: ASP.NET MVC 中的一个重要功能是 AntiForgeryToken。这会生成一个隐藏的表单字段(防伪令牌),在提交表单时会对其进行验证。防伪令牌可用于帮助保护您的应用程序免受跨站点请求伪造

.cshtml Code

@using (Html.BeginForm("Index", "Home"))
{
    @Html.AntiForgeryToken()
}

Controller Code

[ValidateAntiForgeryToken()]
[HttpPost]
public ActionResult Index()
{
    //Your Code
    return View();
}

您可以使用服务器端算法对要保护的数据进行编码,这样视图只会接收编码数据。当用户将表单传递给控制器​​时,您将解码数据并检查有效性。还要记住不仅要为您的模型实施客户端验证,还要实施服务器端验证。