2013-08-23 28 views
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的视图模型表示类不应出于安全目的包含用户标识(以防止人们篡改用户标识)。

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

我不能为我的生活找到支持这种说法的任何文件,也没有能够得到直接的答案。

这是常见的吗?出于安全目的,ViewModel应该从View中“隐藏”特定属性吗?我知道如果数据来自模型绑定,它可能会被篡改,只是试图找出什么是这种情况下的首选方法/最佳做法。

回答

1

暴露的用户ID可能是一个潜在的安全问题,这是因为:

  1. 你透露的信息和
  2. 它可以被篡改。

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

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