确保用户更新自己的记录

时间:2015-12-07 18:21:44

标签: asp.net csrf-protection

我正在建立一个简单的网络表单,允许用户编辑电子邮件,紧急联系等数据。

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

让我们说以下控制器方法接收保存数据的请求。

SaveData(recordId, email, emergencyContact)
{
  ;
}

问题:如何确保recordId确实是作为编辑表单一部分呈现的ID?我们不希望此用户更新其他用户的记录。

我有以下几种选择 1.创建记录ID的哈希值并发送哈希值。 2.确保用户有权修改给定记录ID中指示的记录。

还有其他方法吗? MVC 5是否提供任何功能,以便我不必将这种逻辑放在我的应用程序逻辑中?

1 个答案:

答案 0 :(得分:0)

典型的方法是:

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

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