Jam*_*mes 5 .net asp.net-mvc-3
我只是很困惑为什么在视图中使用域对象是不好的做法?有人告诉我,它可以留给模型绑定攻击,但我不太确定这是什么或如何完成。我也不太明白将属性复制到视图模型将如何解决这个问题。
提前致谢
您的域对象通常包含定义标志的属性,isAdmin, isDeleted, isAuthorized或者您可能不希望最终用户弄乱的任何其他安全或敏感信息,即使您只以只读状态显示它,您也会在视图/中泄露属性名称html,让一些“聪明的用户”有机会玩你的 POST 操作,如果你没有采取正确的预防措施,这可能会导致安全漏洞。
如果您使用 ViewModel,您将被迫从ViewModel <-> Model(域对象)进行重新映射,在此重新映射中,您可以确保分配正是您想要从任何特定用户处获得的分配,例如:
if(CurrentUser.IsAdmin)
{
//Assign just if the current user is admin
Model.IsDeleted = ViewModel.Delete;
}
Run Code Online (Sandbox Code Playgroud)