У меня нет ответа конкретно на ваш вопрос, но я хотел бы отметить, что подход «белый список» и «черный список» не просто «хороший». Это важно. Очень важно. Когда дело доходит до безопасности, важна каждая мелочь. Помните, что при использовании межсайтовых сценариев и подделки межсайтовых запросов , даже если на вашем сайте не отображаются конфиденциальные данные, хакер может заразить ваш сайт, внедрив javascript и использовать его для получения конфиденциальных данных с другого сайта. Правильно делать это очень важно.
Рекомендации OWASP определяют с использованием подхода белого списка . Рекомендации по соответствию PCI также указывают это в стандартах кодирования (поскольку они относятся к рекомендациям OWASP).
Кроме того, более новая версия библиотеки AntiXss имеет приятную новую функцию: .GetSafeHtmlFragment (), которая подходит для тех случаев, когда вы хотите сохранить HTML в базе данных и отобразить его пользователю в виде HTML.
Также, что касается «ошибки», если вы кодируете правильно и соблюдаете все правила безопасности, вы используете параметризованные хранимые процедуры, поэтому одинарные кавычки будут обрабатываться правильно. Если вы не кодируете должным образом, никакая готовая библиотека не защитит вас полностью. Библиотека AntiXss предназначена для использования в качестве инструмента, а не замены знаний. Если вы полагаетесь на то, что библиотека сделает все правильно, вы ожидаете, что действительно хорошая кисть получит хорошие картины без хорошего художника.
Редактировать - Добавлено
Как указано в вопросе, пример того, как анти-xss защитит вас, а HttpUtility - нет:
HttpUtility.HtmlEncode и Server. HtmlEncode не запрещает межсайтовый скриптинг
Хотя, по мнению автора. Я не проверял это лично.
Звучит так, будто вы придерживаетесь своих рекомендаций по безопасности, так что, возможно, мне не стоит об этом говорить, но на всякий случай читают это менее опытный разработчик, по этой причине я говорю, что белый список Подход имеет решающее значение, это.
Прямо сейчас, сегодня HttpUtility.HtmlEncode может успешно блокировать каждую атаку, просто удаляя / кодируя <
и >
, а также несколько других «известных потенциально небезопасных» символов, но кто-то всегда пытается думать о новых способах взлома. Разрешить использование только известного безопасного (белого списка) контента гораздо проще, чем пытаться придумать все возможные небезопасные данные, которые злоумышленник может бросить в вас (подход черного списка).