2013-08-23 61 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,因爲您已經知道用戶是誰。