Я являюсь членом Исследовательской группы безопасности Fortify, и я прошу прощения за путаницу, которую эта проблема вызывает у вас. Мы не очень хорошо представили этот тип проблемы. Я думаю, что часть проблемы заключается в названии категории - мы не пытаемся сказать, что с механизмом валидации что-то не так, просто мы не можем сказать, подходит ли он для этой ситуации.
Другими словами, мы не знаем, какова правильная проверка для вашего конкретного контекста. По этой причине мы не распознаем какие-либо функции кодирования HTML как проверяющие по XSS из коробки, даже те, которые есть в библиотеке Microsoft AntiXSS.
Что касается правильного решения, если вы используете HtmlEncode для вывода имени пользователя в тело HTML-страницы, ваш исходный код в порядке. Если закодированное имя пользователя используется в URL-адресе, оно может быть уязвимо для XSS. В Fortify, когда мы обнаруживаем подобные проблемы в нашем собственном коде, если проверка соответствует контексту, мы помечаем ее как «Не проблема».
Мы знаем о проблемах, связанных с этими проблемами, и впредь вносим изменения в наши правила, чтобы сделать их более точными и понятными. Мы выпускаем новые правила каждые три месяца и планируем внести пару изменений в будущих выпусках. На четвертый квартал мы планируем разделить проблемы на неадекватную проверку (для кодирования в черном списке и других слабых схем проверки) и проверку с учетом контекста (тип проблемы, которую вы видите). Пожалуйста, дайте нам знать, если мы можем помочь больше.
(ссылка на объяснение OWASP о том, почему кодировка HTML не решает все проблемы:
http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#Why_Can.27t_I_Just_HTML_Entity_Encode_Untrusted_Data.3F)