0

mvc4 を使用して、エンティティ フレームワークに C# プログラムを作成しています。

リレーションを持つオブジェクトへのポストの自動バインドを C# で行うことが可能かどうか疑問に思っていました (可能だと確信しています)。

例: User クラスと関係のある Item クラスがあります。

public class Item
{
    public int ItemId{get;set;}
    public string Name{get;set;}

    public virtual User Owner{get;set;}
}

post メソッドを持つ ItemController があります。

public class ItemController
{
    ...
    public HttpResponseMessage PostItem(Item item)
    {
         ....
    }
}

リレーションを持つクラスでは、ポスティングと動的バインディングはどのように機能しますか?

4

1 に答える 1

1

はい、可能です。ただし、EF モデルに直接投稿することは絶対に (まあ、ほとんど) すべきではありません。理由はたくさんありますが、セキュリティはリストの上位にありますが、保守性と (例えば、関心の分離) も非常に高いです。

どのようにセキュリティ上の問題になる可能性がありますか? ユーザー プロパティに「IsAdmin」フィールドがあるとします。ビューに IsAdmin への参照がなくても、悪意のあるユーザーが true の Owner.IsAdmin を投稿する可能性があり、SaveChanges を実行すると、ユーザーは管理者になります。

はい、確かに、あなたのアプリはそのように動作しない可能性があります。しかし、他の詳細がハッキングされたり、パスワードが変更されたり、その他の悪意のある方法がいくつも考えられる可能性があります.

原則として、データ モデルをビューに直接渡さないでください。中間のビュー モデルを使用し、承認された値のみをコピーし、ビュー モデルにビューに必要なフィールドのみを含めます。

于 2013-03-09T18:36:41.950 に答える