Почему пользуются библиотекой Microsoft AntiXSS?

Когда можно просто закодировать использование данных HttpUtility.HtmlEncode, почему мы должны использовать AntiXss.HtmlEncode?

Почему белый подход списка лучше, чем черный список?

Кроме того, в библиотеке Anti XSS, где я определяю белый список?

17
задан Nick 7 January 2010 в 17:37
поделиться

3 ответа

Белые списки всегда более безопасны, чем черные - просто подумайте, какие из них будут более безопасными, имея список всех людей, которые не допущены к вашей партии, или только тех, кто допущен к ней. (В основном, черные списки могут обрабатывать только атаки, которые очевидны или использовались ранее).

.
7
ответ дан 30 November 2019 в 12:58
поделиться

Библиотека AntiXss также включает методы кодирования для таких вещей, как Javascript или атрибуты.

1
ответ дан 30 November 2019 в 12:58
поделиться

Вы не можете указать или изменить белый список с помощью библиотеки AntiXSS, что неудивительно, если подумать. Библиотека AntiXSS по умолчанию кодирует все символы, которые не находятся в следующем диапазоне: 0..9a..zA..Z. Этот набор символов безопасен (и поэтому находится в белом списке), и его не нужно кодировать. Обратите внимание, что в библиотеке AntiXSS есть разные списки для кодирования javascript, html и URL-адресов. Пожалуйста, не используйте кодировку html для URL-адресов, потому что у вас будет дыра в безопасности в вашем приложении.

Обратите внимание, что белый список на HtmlEncode работает иначе, чем белый список на GetSafeHtmlFragment . С помощью HtmlEncode вы говорите «пожалуйста, кодируйте каждый символ, который не находится в белом списке», с помощью GetSafeHtmlFragment вы говорите «пожалуйста удалите все теги и атрибуты, которых нет в белом списке ».

Когда вы используете ASP.NET 4.0, я бы посоветовал вам не использовать библиотеку AntiXSS (напрямую), а просто использовать встроенные механизмы (такие как HttpUtility) для кодирования Html. ASP.NET 4.0 позволяет настраивать HttpEncoder в файле конфигурации . Вы можете написать свой собственный HttpEncoder , который использует библиотеку AntiXSS (вероятно, будущая версия библиотеки AntiXSS будет содержать реализацию HttpEncoder ). При этом все ваше приложение (и все элементы управления ASP.NET и настраиваемые элементы управления) будет использовать кодировку белого списка вместо кодировки черного списка.

ASP.NET 4.0 также вводит новый кодовый блок для закодированного текста . Вы можете использовать Имя: <%: Model.FirstName%> . Однако я лично считаю <% = HttpUtility.HtmlEncode (Model.FirstName)%> более явным.

19
ответ дан 30 November 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: