Белый список .NET HTML (анти-xss / межсайтовый скриптинг)

у меня общая ситуация, когда яу нас есть пользовательский ввод, который использует подмножество HTML (ввод с помощью tinyMCE). Мне нужна некоторая защита на стороне сервера от атак XSS, и я ищу хорошо протестированный инструмент, который люди используют для этого. На стороне PHP яя вижу много библиотек, таких как HTMLPurifier, которые делают эту работу, но я могуКажется, что-то найти в .NET.I

Я в основном ищу библиотеку для фильтрации до белого списка тегов, атрибутов этих тегов, и делает правильные вещи с "сложно" атрибуты, такие как: href и img: srcI '

видел Джеффа Этвудапост вhttp://refactormycode.com/codes/333-sanitize-htmlно я нене знаю, насколько это актуально. Имеет ли это какое-либо отношение к тому, что сайт использует в настоящее время? И в любом случае яя не уверен, что яЯ доволен этой стратегией, пытаясь отыграть действительный вклад.

В этом сообщении в блоге изложена более убедительная стратегия:

http://blog.bvsoftware.com/post/2009/01/08/How-to-filter-Html-Input-to-Prevent-Cross-Site-Scripting-but-Still-Allow-Design.aspx

Этот метод заключается в том, чтобы фактически проанализировать HTML-код в DOM, проверить его, а затем восстановить из него действительный HTML-код. Если разбор HTML может разумно обрабатывать искаженный HTML, то отлично. Если нет, то ничего страшного - я могу потребовать правильно сформированный HTML, поскольку пользователи должны использовать редактор tinyMCE. В любом случае яЯ переписываю то, что я знаю, это безопасный, правильно сформированный HTML.

Проблема в том, что'Это просто описание без ссылки на какую-либо библиотеку, которая фактически выполняет этот алгоритм.

Существует ли такая библиотека? Если нет, то что будет хорошим механизмом парсинга .NET HTML? И какие регулярные выражения следует использовать для дополнительной проверки a: href, img: src? Я скучаю по чему-то еще важному здесь?

Я неЯ не хочу повторно внедрить колесо с ошибками здесь. Конечно, естьЕсть некоторые часто используемые библиотеки. Есть идеи?

Ответы на вопрос(6)

Ваш ответ на вопрос