Я начинаю проект, который будет публичным, используя asp.net mvc. Я знаю, что там есть около миллиарда php, python и ruby html sanitizers, но есть ли у кого-нибудь какие-либо указания на что-нибудь хорошее в .net? Каков ваш опыт в том, что там? Я знаю, что stackoverflow - это сайт, созданный в asp.net, который позволяет произвольную HTML-форму, что она использует?
HTML Sanitizer для .NET
Ответ 1
Ответ 2
HtmlSanitizer
Источник: https://github.com/mganss/HtmlSanitizer
Достаточно надежный дезинфицирующее средство. Он понимает и может очищать встроенные стили, но не имеет анализатора, который может иметь дело с <style> блоков, поэтому он их разделяет. Это, безусловно, до и, возможно, выше уровня, на котором находился Microsoft AntiXSS, прежде чем он был оставлен.
Ответ 3
существует версия С# здесь
Ответ 4
Вот один из построил microsoft. http://wpl.codeplex.com/
var cleanHtml = Sanitizer.GetSafeHtml(unsafeHtml);
Ответ 5
По вашему вопросу у меня есть следующие предложения:
- Вы хотите разрешить бесплатный HTML-форму, поэтому вам нужно решение, чтобы иметь возможность указывать набор тегов, атрибутов и/или классов CSS, которые разрешены.
- Предоставляя бесплатную форму HTML, вполне вероятно, что вам также придется иметь дело с неправильным HTML, потому что пользователи делают ошибки (преднамеренные или нет). Таким образом, вам необходимо решение, основанное на толерантном парсере, например Html Agility Pack.
- Вы хотите использовать белый листинг, потому что черный дезинфицирующий агент не защищает вас от каких-либо новых спецификаций HTML. Кроме того, очень сложно гарантировать, что черный список охватывает все случаи в первую очередь из-за размера спецификации HTML.
Я столкнулся с той же проблемой и создал HtmlRuleSanitizer, который является белым списком правил, основанным на HTML-дезинфицирующем устройстве поверх Html Agility Pack.