0

赋予 View 的这两个模型在安全性方面是否存在差异?IE。在第二个示例中,网络用户/黑客可以以任何方式访问这些方法吗?

public class ObjectViewModel
  { 
   public PropertyA {get;set;}
   public PropertyB {get;set;}
   public PropertyC {get;set;}
  }



public class ObjectViewModel2
  {
   public PropertyA {get; private set;}
   public PropertyB {get; private set;}
   public PropertyC {get; private set;}

   private void SetPropertyA()
   {
      ...GetDataFromRepository();
   } 

   private void SetPropertyB()
   {
      ...GetDataFromRepository();
   } 

   private void SetPropertyC()
   {
      ...GetDataFromRepository();
   } 
}
4

3 回答 3

4

首先,模型本身不暴露给网络浏览器。它只暴露给驻留在服务器上的视图渲染引擎。您可以通过您的操作公开对模型中某些属性的访问,但这些只能通过查询或表单参数。它不会提供对底层方法的访问权限。

其次,您应该知道的一件事是,默认模型绑定器要求您希望设置的任何属性都可以通过公共访问器访问。如果您使用私有设置器创建属性,它不会通过模型绑定器更新。

于 2009-05-19T17:33:17.737 回答
1

不,除非您明确告诉它,否则这些方法不能通过 View 以任何方式访问。

除非您的控制器专门公开这些方法,否则只有属性可通过模型绑定获得。

于 2009-05-19T17:13:04.970 回答
1

当绕过视图引擎并返回Json(model)XmlResult(model) 之类的内容时,您可以公开您的数据。但是,由于您的数据正在被序列化,因此您的视图模型方法不再适用。

于 2009-05-19T17:54:56.510 回答