2009-05-19 3 views
0

View에 부여 할 두 모델 간의 보안 측면에서 차이점이 있습니까? 예. 두 번째 예제에서 웹 사용자/해커는 어떤 방식 으로든 메소드에 액세스 할 수 있습니까?asp.net mvc의 Viewmodel 보안

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

먼저 모델 자체는 웹 브라우저에 노출되지 않습니다. 서버에있는 뷰 렌더링 엔진에만 노출됩니다. 액션을 통해 모델의 특정 속성에 대한 액세스를 노출 할 수 있지만 쿼리 또는 양식 매개 변수를 통해서만 가능합니다. 기본 메소드에 대한 액세스 권한을 부여하지 않습니다.

두 번째로, 기본 모델 바인더는 공용 속성을 통해 설정할 속성을 필요로한다는 점을 알아야합니다. 개인 설정 도구로 속성을 만들면 모델 바인더를 통해 속성이 업데이트되지 않습니다.

1

아니요, 명시 적으로 지정하지 않으면보기를 통해 이러한 방법에 액세스 할 수 없습니다.

컨트롤러가 이러한 메서드를 특별히 노출하지 않으면 모델 바인딩을 통해 속성 만 사용할 수 있습니다.

1

뷰 엔진을 바이 패스하고 Json(model) 또는 XmlResult(model)과 같은 것을 반환 할 때 데이터를 노출 할 수 있습니다. 그러나 데이터가 직렬화되기 때문에 보기 모델 방법이 더 이상 적용되지 않습니다.