То, на что вы ссылаетесь, называется чрезмерной публикацией.
Предотвращение массового назначения или публикации в ASP.NET Core
Выдержка:
- Использование BindAttribute для метода действия
public IActionResult Safe1([Bind(nameof(UserModel.Name))] UserModel model)
{
return View("Index", model);
}
Используйте [Редактируемый] или [BindNever] на модели
public class UserModel
{
[MaxLength(200)]
[Display(Name = "Full name")]
[Required]
public string Name { get; set; }
[Editable(false)]
public bool IsAdmin { get; set; }
}
Используйте две разные модели
public class BindingModel
{
[MaxLength(200)]
[Display(Name = "Full name")]
[Required]
public string Name { get; set; }
}
public class UserModel
{
[MaxLength(200)]
[Display(Name = "Full name")]
[Required]
public string Name { get; set; }
[Editable(false)]
public bool IsAdmin { get; set; }
}
Используйте базовый класс
public class BindingModel
{
[MaxLength(200)]
[Display(Name = "Full name")]
[Required]
public string Name { get; set; }
}
public class UserModel : BindingModel
{
public bool IsAdmin { get; set; }
}
Использовать ModelMetadataTypeAttribute
[ModelMetadataType(typeof(UserModel))]
public class BindingModel
{
public string Name { get; set; }
}
public class UserModel
{
[MaxLength(200)]
[Display(Name = "Full name")]
[Required]
public string Name { get; set; }
public bool IsAdmin { get; set; }
}