Укрепите сканирование: ASP.NET Неправильные методы MVC: Необязательная подмодель С требуемым свойством — Но требуемое свойство в подмодели может быть аннулировано

#fortify

Вопрос:

Проверка Fortify сообщает о проблеме с кодом ниже

 class MyModel {
    public string Name {get;set;}
    public int StudentId {get;set;}
    public MySubModel Class {get;set;}
}

class MySubModel {
    public string Title {get;set;}
    [Required]
    public int? Id {get;set;}
}
 

Проблема с сканированием:

Класс модели MyModel обладает обязательным свойством, тип которого является необязательным членом родительского типа модели и, следовательно, может быть подвержен атакам с недостаточной публикацией.

Моя субмодель.Идентификатор требуется, но он также может быть аннулирован. Почему я должен отмечать свойство класса типа MySubModel как [Требуется]? В моем бизнес-требовании не говорится, что требуется класс. Мне кажется, что Fortify не учитывает тот факт, что идентификатор может быть аннулирован, и просто показывает проблему. Мой аргумент заключается в том, что это проблема в Fortify. Я попытался получить ложноположительный результат, но рецензент пытается сказать мне, что я должен отметить [Требуется] в обоих местах. Мы занимаемся ретро-ремонтом, и мне немного сложно добавить [Необходимый] атрибут в модель, потому что это может привести к поломке. Любая помощь будет признательна. Кстати, мы используем версию 21.1.2 Fortify.

Просто хочу добавить сюда еще один, но связанный с этим вопрос: ASP.NET Плохие Практики MVC: Модель С Требуемым Свойством, Не Подлежащим Аннулированию

 public class RequiredModelTest
{
    [Required]
    public string Name { get; set; }
    [Required]
    public DateTime DateOfBirth { get; set; }
    [Required]
    public int Age { get; set; }
}
 

Приведенный выше код приводит к

Класс модели RequiredModelTest обладает необходимым свойством, не допускающим обнуления, и поэтому может быть подвержен атакам с недостаточной публикацией.

Рекомендуется отметить дату рождения и возраст как недействительные, чтобы предотвратить атаку.

Таким образом, реальный вопрос заключается в том, когда здесь принимается значение null, почему бы не использовать подмодель? Вот почему я думаю, что это ложный положительный результат или действительно ошибка в Fortify. Он просто игнорирует тот факт, что свойство в подмодели может быть обнулено.