Вопрос

Я начинаю проект, который будет общедоступным, используя asp.net mvc.Я знаю, что существует около миллиарда дезинфицирующих средств php, python и ruby для html, но есть ли у кого-нибудь какие-нибудь указания на что-нибудь хорошее в .net?Каков ваш опыт общения с тем, что есть снаружи?Я знаю, что stackoverflow - это сайт, созданный на asp.net, который допускает произвольную форму HTML, что он использует?

Это было полезно?

Другие советы

Htmlсанитайзер

Источник: https://github.com/mganss/HtmlSanitizer

Довольно надежное дезинфицирующее средство.Он понимает и может очищать встроенные стили, но не имеет синтаксического анализатора, который может работать с <style> blocks, so it strips them.Это, безусловно, соответствует и, вероятно, превосходит уровень, на котором находился Microsoft AntiXSS до того, как от него отказались.

HtmlRuleSanitizer Средство для очистки

Основываясь на вашем вопросе, у меня есть следующие предложения:

  • Вы хотите разрешить HTML в свободной форме, поэтому вам нужно решение, позволяющее указать набор разрешенных тегов, атрибутов и / или классов CSS.
  • Разрешив свободную форму HTML, вполне вероятно, что вам также придется иметь дело с искаженным HTML, потому что пользователи допускают ошибки (преднамеренные или нет).Таким образом, вам нужно решение, построенное на толерантном анализаторе, таком как Html-пакет Гибкости.
  • Вы захотите использовать подход с использованием белого списка, потому что средство для очистки черного списка не защищает вас от каких-либо новых спецификаций HTML.Кроме того, очень трудно гарантировать, что черный список охватывает все случаи в первую очередь из-за размера спецификации HTML.

Я столкнулся с той же проблемой и создал HtmlRuleSanitizer, который представляет собой HTML-дезинфицирующее средство на основе правил белого списка поверх пакета Html Agility Pack.

существует версия на c # здесь

Вот один из них, созданный Microsoft. http://wpl.codeplex.com/

var cleanHtml = Sanitizer.GetSafeHtml(unsafeHtml);

Мы также можем использовать

Антивирус.Получает фрагменты SafeHtml

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

 string mal = "<IMG NAME = 'myPic' SRC = 'images / myPic.gif' onerror='alert(1)' onerror='alert(1) ><div bottommargin = 150 ondblclick = 'alert('double clicked!')' >< p > Double - click anywhere in the page.</p> </div> ";
                var cleanHtml = Sanitizer.GetSafeHtmlFragment(mal);
                Console.Write(cleanHtml);
                Console.Read(); 

Примечание:Загрузите библиотеку AntiXSS из nugetpackage manager и включите эту команду имен Майкрософт.Безопасность.Применение в коде souce;

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top