HTML Sanitizer для .NET - PullRequest
       8

HTML Sanitizer для .NET

20 голосов
/ 04 декабря 2008

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

Ответы [ 6 ]

16 голосов
/ 26 сентября 2013

HtmlSanitizer

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

Довольно надежное дезинфицирующее средство. Он понимает и может очищать встроенные стили, но не имеет парсера, который может работать с

9 голосов
/ 04 декабря 2008
4 голосов
/ 29 сентября 2015

HtmlRuleSanitizer

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

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

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

3 голосов
/ 12 декабря 2011

Вот тот, который построен Microsoft. http://wpl.codeplex.com/

var cleanHtml = Sanitizer.GetSafeHtml(unsafeHtml);
3 голосов
/ 18 ноября 2011

есть версия c # здесь

1 голос
/ 15 июня 2018

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

AntiXss.GetSafeHtmlFragments

очистить ввод с помощью анализа фрагмента 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 и включите это namesapce Microsoft.Security.Application в исходном коде ;

...