1

我正在尝试开始一个新的 ASP.NET MVC4 项目,并且有一些关于 View Model 安全性的问题。

假设我有一个类来代表应用程序用户

public class User
{
    public int UserID { get; set; }
    public string Name { get; set; }
}

另一个代表应用程序用户任务的类

public class UserTask
{
    public int TaskID { get; set; }
    public int UserID { get; set; }

    public string Task { get; set; }
}

我的同事似乎认为 UserTask 类的视图模型表示不应该包含出于安全目的的 UserID(以防止人们篡改 UserID)。

例子

public class UserTaskViewModel
{
    public int TaskID { get; set; }
    public string Task { get; set; }
}

我一生都找不到任何支持这一主张的文件,也无法得到直接的答案。

这是普遍现象吗?出于安全目的,ViewModel 是否应该从视图中“隐藏”特定属性?我知道如果数据来自模型绑定,它可能会被篡改,只是想弄清楚这种情况下的首选方法/最佳实践是什么。

4

1 回答 1

1

暴露 UserId 可能是一个潜在的安全问题,因为:

  1. 您正在泄露信息并且
  2. 它可以被篡改。

如果您要列出不同用户的任务,那么您需要了解每个任务的用户。我想您可以混淆 UserId,或者当他们与任务交互(编辑/删除)时,您可以简单地检查用户是否具有访问权限。

如果只允许用户与他们自己的任务进行交互,则无需包含 userId,因为您已经知道用户是谁。

于 2013-08-23T23:39:54.467 回答