我只是很困惑为什么在 View 中使用域对象是不好的做法?我被告知它可以留给模型绑定(bind)攻击,但我不确定这是什么或如何完成。我也不太明白将属性复制到 View 模型将如何解决这个问题。
提前致谢
最佳答案
您的域对象通常包含定义标志或位的属性,例如 isAdmin, isDeleted, isAuthorized
或您可能不希望最终用户弄乱的任何其他安全或敏感信息,即使您仅以只读状态显示它,您也将在view/html,让一些“聪明的用户”有机会玩你的 POST 操作,如果你没有采取正确的预防措施,这可能会导致安全漏洞。
如果您使用 ViewModel,您将被迫从 ViewModel <-> Model
(域对象)进行重新映射,在此重新映射中,您可以确保分配正是您想要的任何特定用户的分配,例如:
if(CurrentUser.IsAdmin)
{
//Assign just if the currrent user is admin
Model.IsDeleted = ViewModel.Delete;
}
关于.net - 为什么我们不应该在 View 中使用域对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12228628/