Fortify считает, что у меня проблема XSS

Fortify сообщает мне, что у меня есть критическая проблема, связанная с XSS-уязвимостью.

Аннотация: Межсайтовый скриптинг: отражение (проверка и представление входных данных, поток данных)

Метод DoFoo() в FooController.cs отправляет непроверенные данные в веб-браузер в строке 112, что может привести к выполнению браузером вредоносного кода.

Не нравится, что возвращает этот метод

return new JsonResult
    {
        Data = new
            {
                NameChanged = nameChanged,
                DatabaseUpdated = true,
                HasOpenAccount = contact.HasOpenAccount
            }
     };

Все три из этих значений являются логическими. Последний (contact.HasOpenAccount) является логическим значением, допускающим значение NULL. Это то, что Fortify не любит (я думаю, потому что contact — это объект, переданный из javascript).

Я возился с HttpUtility.HtmlEncode, и добавление его в строку HasOpenAccount меняет проблему Fortify с критической на среднюю (плохая проверка).

Я могу жить с этим, но это не похоже на то, что это действительно проблема. Как логическое значение, допускающее значение NULL, может быть уязвимым для вредоносных атак? Возможно ли это, или Fortify сходит с ума?

Обновление:

Я исправил это, изменив

HasOpenAccount = contact.HasOpenAccount

to

HasOpenAccount = contact.HasOpenAccount ?? false

чтобы вернуть false, когда он равен нулю. Это полностью устранило проблему Fortify. Очевидно, он не любит nullables? Однако мой первоначальный вопрос остается в силе, это вообще реальная проблема?


person Bobo    schedule 30.10.2014    source источник


Ответы (1)


Если все они являются логическими, просто сделайте комментарий, что это ложное срабатывание, а затем отметьте его как «Не проблема» (и/или «Подавите это»).

person James Nix    schedule 30.10.2014
comment
Я не беспокоюсь об устранении проблемы, просто если это действительно проблема. Это похоже на ложное срабатывание, но я не знаю, не упускаю ли я что-то. - person Bobo; 30.10.2014