Предотвратите атаку на подпостинге, задав свойства виртуальной навигации [Обязательно] в моделях платформы Entity - PullRequest
0 голосов
/ 17 апреля 2020

Необходимо ли добавлять аннотацию [Требуется] либо к внешнему ключу, либо к свойству виртуальной навигации модели платформы Entity для предотвращения атаки при публикации?

У меня есть модели ниже. CompanyId - это внешний ключ, а модель Company имеет CompanyName в качестве свойства [Required]. Имея в виду, что внешний ключ является недействительным int Существует ли риск недопустимого размещения атаки, если внешний ключ или свойство виртуальной навигации модели Employee не помечено [Обязательно]. Если существует риск, оказывает ли добавление [Требуется] на любой из них какое-либо негативное влияние? Поскольку я включил отложенную загрузку и добавил [Обязательный] для свойства виртуальной навигации, необходимо инициализировать их перед сохранением Employee модели.

[Table("Employee")]
pulic partial class Employee : Model
{
  public override int Id {get;set;}
  public int CompanyId {get;set;}
  public string Name {get;set;}
  [Required]
  public virtual Company Company {get;set;}
}

[Table("Company")]
public partial class Company : Model
{
  public override int Id {get;set;}
  [Required]
  public string CompanyName {get;set;}
  public virtual Icollection<Employee> Employees {get;set;}
}

Эта модель структуры Entity имеет соответствующую модель представления EmployeeViewModel.

public class EmployeeViewModel
{
 public int Id {get;set;}
 public string Name {get;set;}
 public int CompanyId {get;set;}
}
...