Когда можно просто закодировать использование данных HttpUtility.HtmlEncode
, почему мы должны использовать AntiXss.HtmlEncode
?
Почему белый подход списка лучше, чем черный список?
Кроме того, в библиотеке Anti XSS, где я определяю белый список?
Белые списки всегда более безопасны, чем черные - просто подумайте, какие из них будут более безопасными, имея список всех людей, которые не допущены к вашей партии, или только тех, кто допущен к ней. (В основном, черные списки могут обрабатывать только атаки, которые очевидны или использовались ранее).
.Библиотека AntiXss также включает методы кодирования для таких вещей, как Javascript или атрибуты.
Вы не можете указать или изменить белый список с помощью библиотеки 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)%>
более явным.