Дезинфицирующее средство HTML для .NET
-
19-08-2019 - |
Вопрос
Я начинаю проект, который будет общедоступным, используя 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;