【发布时间】:2014-09-02 13:48:17
【问题描述】:
我使用 Entity Framework 6,代码优先方法,以及 asp.net mvc 5。
razor 视图都是强类型的,并且大多数都使用包含 DAL 模型的视图模型。一些视图直接使用 DAL 中的模型。我想知道这会带来什么样的安全风险。让我演示一下:
public class SomeViewModel {
public SomeModel SomeModel {get;set;}
public int OtherProperty {get;set;}
}
在剃刀视图中:
@model SomeViewModel
我向 razor 视图公开的是,除其他外,有 2 个潜在的安全风险:SomeModel 实例的 db id 和实体的动态代理 id(或其他任何东西),我猜这与实体的延迟加载。
System.Data.Entity.DynamicProxies.SomeModel_2ED515217...etc
所以我的计划是确保所有剃须刀视图仅使用视图模型。此外,所有视图模型都应排除上述 2 项,即 db id 和动态代理 id。
所以SomeViewModel 会变成这样:
public class SomeViewModel {
public int SomeModelId {get;set;}
public string SomeModelPropA {get;set;}
public string SomeModelPropB {get;set;}
public int OtherProperty {get;set;}
}
总而言之,对模型使用的剃刀视图进行非常严格的限制是个好主意吗? 我知道 razor 视图是服务器端编译的,但是如果 razor 开发人员不小心使用了一些“禁止”视图模型属性怎么办?
【问题讨论】:
标签: asp.net-mvc security razor model viewmodel