2009-05-19 18 views
0

Viewに与えられるこれらの2つのモデル間のセキュリティの点で違いはありますか?つまり2番目の例では、Webユーザー/ハッカーはどのような方法でもメソッドにアクセスできますか?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

まず、モデル自体はWebブラウザに公開されません。これは、サーバー上に存在するビューレンダリングエンジンにのみ公開されます。アクションを介してモデル内の特定のプロパティにアクセスを公開することはできますが、クエリまたはフォームのパラメータを介してのみ実行できます。基礎となるメソッドにアクセスすることはできません。

第2に、デフォルトのモデルバインダーでは、パブリックアクセサを使用して設定するプロパティが必要であることがわかります。プライベートセッターでプロパティを作成すると、モデルバインダーを介して更新されません。

1

いいえ、これらのメソッドには、明示的に指示しない限り、ビュー経由でアクセスすることはできません。

コントローラがこれらのメソッドを具体的に公開していない限り、モデルバインドではプロパティのみが使用できます。

1

ビューエンジンをバイパスしてJson(model)またはXmlResult(model)のようなものを返すと、データが公開される可能性があります。ただし、データがシリアル化されているので、 ビューモデルメソッドは適用されなくなりました。

関連する問題