Viewmodel безопасности в asp.net MVC - PullRequest
0 голосов
/ 19 мая 2009

Есть ли разница с точки зрения безопасности между этими двумя моделями, которые будут предоставлены View? То есть. во втором примере может ли веб-пользователь / хакер получить доступ к методам каким-либо образом?

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();
   } 
}

Ответы [ 3 ]

4 голосов
/ 19 мая 2009

Во-первых, сама модель не отображается в веб-браузере. Он доступен только для механизма визуализации представлений, который находится на сервере. Вы можете открыть доступ с помощью своих действий к определенным свойствам в вашей модели, но это только через параметры запроса или формы. Это не даст доступ к базовым методам.

Во-вторых, вы должны знать одну вещь: связыватель модели по умолчанию требует, чтобы любые свойства, которые вы хотите установить, были доступны через общедоступные средства доступа. Если вы создаете свойство с частным установщиком, оно не будет обновляться через связыватель модели.

1 голос
/ 19 мая 2009

Когда вы обходите движок представления и возвращаете что-то вроде Json (модель) или XmlResult (модель) , вы можете предоставить свои данные. Тем не менее, так как ваши данные сериализуются методы модели вашего представления больше не применяются.

1 голос
/ 19 мая 2009

Нет, эти методы не могут быть доступны каким-либо образом через представление, если вы явно не укажете это.

Если ваш контроллер специально не предоставляет эти методы, через привязку модели доступны только свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...