Зачем использовать библиотеку Microsoft AntiXSS? - PullRequest
16 голосов
/ 07 января 2010

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

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

Кроме того, где в библиотеке Anti XSS указывать белый список?

Ответы [ 4 ]

18 голосов
/ 24 февраля 2010

Вы не можете указать или изменить белый список с библиотекой 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) %> более явным.

7 голосов
/ 07 января 2010

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

1 голос
/ 07 января 2010

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

0 голосов
/ 19 октября 2016

Я пытался внедрить библиотеку AntiXss, и она хорошо работала для удаления тега скрипта. Но не удалось сделать это с HTML. Смотрите пример ниже

<a href="http://west-wind.com">West Wind</a><br>Hello<br>Please login with the form below before proceeding:<form action="”mybadsite.aspx”"><table><tbody><tr><td>Login:</td><td><input type="text" name="x_x_x_x_x_x_x_x_x_x_x_x_x_login"></td></tr><tr><td>Password:</td><td><input type="text" name="x_x_x_x_x_x_x_x_x_x_x_x_x_password"> </td></tr></tbody></table><input type="submit" value="LOGIN"></form>
...