我正在尝试开始一个新的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中“隐藏”特定属性?我理解,如果数据来自模型绑定,它可能会被篡改,只是想弄清楚这种情况的首选方法/最佳实践。
答案 0 :(得分:1)
公开UserId可能是一个潜在的安全问题,因为:
如果要列出不同用户的任务,则需要了解每个任务的用户。我猜你可能会混淆UserId,或者当他们与任务交互(编辑/删除)时,你只需检查用户是否有权访问。
如果只允许用户与自己的任务进行交互,则不需要包含userId,因为您已经知道该用户是谁。