Есть ли .NET реализация HtmlPurifier (php) - PullRequest
7 голосов
/ 12 января 2010

Существует ли всеобъемлющая библиотека Html cleaner / Anti-Xss для .NET, которая также имеет определенный белый список. Я знаю, что Microsofts Anti-Xss - это хорошее место для начала, но ему нужен хороший белый список для разрешенных HTML-тегов и CSS. Кто-нибудь знает что-то?

Ответы [ 2 ]

10 голосов
/ 05 мая 2010

Что не так с библиотекой Microsoft Anti-XSS (которую вы упомянули)?

У них есть комплексная очистка HTML, которая фильтрует символы на основе белого списка, анализирует HTML, фильтрует узлы на основе белого списка, а затем восстанавливает (безопасный) HTML. Вы можете изменить белые списки (так как код открыт), но я не уверен, что вы захотите.

Использование тоже просто:

var sanitizedHtml = Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(inputHtml);
1 голос
/ 13 января 2010

Согласно MSDN (см. «Разрешение ограниченного ввода HTML») лучший способ обезопасить ввод HTML - это вызвать HttpUtility.HtmlEncode () для вашего ввода, а затем выборочно заменить кодировку для всех ваших тегов белого списка. вот так:

<%@ Page Language="C#" ValidateRequest="false"%>    
<script runat="server">    
  void submitBtn_Click(object sender, EventArgs e)
  {
    // Encode the string input
    StringBuilder sb = new StringBuilder(
                            HttpUtility.HtmlEncode(htmlInputTxt.Text));
    // Selectively allow  and <i>
    sb.Replace("&lt;b&gt;", "<b>");
    sb.Replace("&lt;/b&gt;", "");
    sb.Replace("&lt;i&gt;", "<i>");
    sb.Replace("&lt;/i&gt;", "");
    Response.Write(sb.ToString());
  }
</script>

См. Также эту статью .

...