저는 DB 구조를 정의하기 위해 EF 코드 우선 접근 방식을 사용했습니다. 현재, EF 엔티티 클래스를 MVC 응용 프로그램의 일부 뷰에 직접 전달하고 있습니다. 이것은 내가 채워진 EF 클래스를 저장소에 직접 갖기 때문에 뷰를 채우고 저장할 수있게 해 주며, 컨트롤러가 포스트 백에서 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
편집 가능한 양식 필드를 노출 수,하지만 난에 사용자가 원하지 않는 예를 들어, 내가이 EF 모델을 전달하는 사용자를 편집 할 뷰를 갖고 있다고 IsDisabled
을 설정하고 계정을 사용 중지 할 수 있습니다. 이것을 막는 가장 좋은 방법은 무엇입니까? 아마도 속성이 해당 도메인 모델에 의해 유지되어 사용자가 설정할 수 있거나 도메인 모델을 사용하여 물건을 표시하는 대신 물건을 다시 저장하는 것이 좋다고 생각할 때보기에서 도메인 모델을 직접 사용해야합니다. 데이터 저장소에?