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