Asp.net 确保用户正在更新自己的记录

Asp.net 确保用户正在更新自己的记录,asp.net,csrf-protection,Asp.net,Csrf Protection,我正在构建一个简单的web表单,允许用户编辑电子邮件、紧急联系人等数据 编辑表单是使用Asp.NET MVC 5呈现的。为Id、电子邮件、紧急联系人等提供适当的html字段 假设保存数据的请求由以下控制器方法接收 SaveData(recordId, email, emergencyContact) { ; } 问题:如何确保recordId确实是作为编辑表单的一部分呈现的id?我们不希望此用户更新其他用户的记录 我有以下选择 1.创建记录id的散列并发送散列。 2.确保用户有权修改给定记

我正在构建一个简单的web表单,允许用户编辑电子邮件、紧急联系人等数据

编辑表单是使用Asp.NET MVC 5呈现的。为Id、电子邮件、紧急联系人等提供适当的html字段

假设保存数据的请求由以下控制器方法接收

SaveData(recordId, email, emergencyContact)
{
  ;
}
问题:如何确保recordId确实是作为编辑表单的一部分呈现的id?我们不希望此用户更新其他用户的记录

我有以下选择 1.创建记录id的散列并发送散列。 2.确保用户有权修改给定记录id中指示的记录


还有别的办法吗?MVC 5是否提供了一些功能,使我不必在应用程序逻辑中加入这种逻辑?

典型的方法是:

  • 将记录的ID存储为隐藏字段。如果您与劫持有关,请在服务器上加密值并解密
  • 在会话中存储记录的ID;这样,您总是会收回记录并将值保留在服务器上。但当会话终止时,指向记录的链接也会终止

是的,如果您将ID存储在URL中,我强烈建议您检查对记录的权限。

我能想到的最明显的功能是身份验证-如果您使用的是表单或Windows身份验证,您可以查找User.Identity.Name的记录ID,并确保它与表单中提交的记录ID匹配。