私はEFコードファーストアプローチを使用してDB構造を定義しました。現在、EFエンティティクラスをMVCアプリケーションの一部のビューに直接渡しています。これにより、ビューの入力と保存が簡単になります。これは、リポジトリに入力されたEFクラスを直接提供させることができ、コントローラーがポストバックでEFエンティティクラスを受け取った場合、(検証がOKの場合)それを直接渡すことができるためです。リポジトリに保存します。ただし、これは潜在的にセキュリティリスクですか?変更したくないプロパティがエンティティクラスにある場合、クライアントはそれらのプロパティをポストバックの一部として送信し、とにかく変更できますか?たとえば、このEFモデルを渡すユーザーを編集するビューがあるとします。
public class User {
[Required]
public string Firstname { get; set; }
[Required]
public string Surname { get; set; }
public DateTime DOB { get; set; }
public bool IsDisabled { get; set; }
}
Firstname
、、Surname
およびを編集可能なフォームフィールドとして公開する場合がありますが、ユーザーがアカウントを設定および無効化DOB
できるようにしたくありません。IsDisabled
これを防ぐための最良の方法は何ですか?おそらく、ビューでドメインモデルを直接使用する必要があるのは、そのドメインモデルによって保持されているすべてのプロパティをユーザーが設定できるのは問題ないと考える場合、またはそのドメインモデルを使用して物を表示するだけで、物を保存するのではない場合です。データストア?