查看模型标识符

时间:2013-08-23 23:28:42

标签: asp.net-mvc asp.net-mvc-4 mvvm

我正在尝试开始一个新的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类的View Model表示不应该出于安全目的而包含UserID(以防止人们篡改UserID)。

实施例

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

我不能在我的生活中找到任何支持这种说法的文件,但却未能得到直接答案。

这是常见的事吗?为了安全起见,ViewModel是否应该从View中“隐藏”特定属性?我理解,如果数据来自模型绑定,它可能会被篡改,只是想弄清楚这种情况的首选方法/最佳实践。

1 个答案:

答案 0 :(得分:1)

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

  1. 您正在透露信息和
  2. 它可以被篡改。
  3. 如果要列出不同用户的任务,则需要了解每个任务的用户。我猜你可能会混淆UserId,或者当他们与任务交互(编辑/删除)时,你只需检查用户是否有权访问。

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