2010-08-09 3 views
0

Как поддержка XSS (Cross Site Scripting), предоставляемая ASP.net, отличается от AntiXss. AntiXss - это microsoft-библиотека для защиты вашего сайта от XSS. Оба API выглядят почти одинаково, и похоже, что их можно легко переключить с одного на другой, выполнив поиск в файлах кода.Поддержка Anti XSS в ASP.net Vs AntiXss Lib

Какой из них обеспечивает большую защиту от XSS? Целесообразно ли использовать внутреннюю поддержку ASP.net?

ответ

2

Существует несколько отличий. Прежде всего, библиотека Microsoft AntiXss использует кодировку белого списка, что означает, что все символы закодированы, за исключением всех известных символов. Стандартный механизм кодирования ASP.NET - черный список. Например, для кодирования HTML он кодирует только 4 символа: <, >, & и " (например, он не кодирует одиночную кавычку). Посмотрите пример на this SO answer, что может пойти не так с этим.

Другое отличие состоит в том, что базовая кодировка ASP.NET (с использованием HttpUtility) способна кодировать URL-адреса HTML en. AntiXss также позволяет кодировать атрибуты HTML и текст JavaScript. В стандартном ASP.NET нет безопасного способа работы.

+0

Если вы ищете только кодировку html и url, то можно ли использовать внутреннюю поддержку ASP.net, а не создавать зависимость от AntiXSS? Каков ваш совет. –

+1

Кодировка белого списка для определения более безопасна, чем кодирование черного списка, поэтому разумно использовать библиотеку AntiXss. Однако, когда вы используете ASP.NET 4.0, вы можете позволить платформе использовать библиотеку 'AntiXss' под обложками, когда вы используете метод HttpUtility.HtmlEncode. Это избавит вас от прямой зависимости от библиотеки и позволяет использовать весь стек управления ASP.NET для использования этой библиотеки. См. Это сообщение в блоге для получения дополнительной информации: http://idunno.org/archive/2010/04/07/replacing-the-asp.net-encoder-with-antixss.aspx. – Steven

+1

Следует отметить, что внедрение класса 4.0 по-прежнему означает, что вам придется иметь зависимость. Хотя структура имеет HtmlAttribute encode и имеет, начиная с 4.0, кодировку Javascript, они все еще используют черный список, а не белый список. Конечно, это означает, что версии каркасов могут быть быстрее, но AntiXSS должен быть по своей сути более безопасным. – blowdart

1

Одна вещь, которую вы можете иметь в виду, - это периоды выпуска; кодировка, встроенная в HttpUtility, может быть обновлена ​​только при выпуске новой версии ASP.NET. Если кто-то придумает атаку XSS, которая работает против HttpUtility на следующий день после ее выпуска, ваше приложение будет уязвимым до тех пор, пока не будет выпущена новая версия ASP.NET. У AntiXSS есть (намного) более быстрый цикл выпуска, а это означает, что при появлении новых атак команда может быстрее реагировать на них и выпускать обновленный AntiXSS, который будет защищать их.

 Смежные вопросы

  • Нет связанных вопросов^_^