8

是否有适用于 .NET 的全面的 Html 清洁器/Anti-Xss 库,它也具有定义的白名单。我知道微软的 Anti-Xss 是一个很好的起点,但它需要一个好的白名单来允许 html 标签和 css。有人知道吗?

4

2 回答 2

10

Microsoft 的Anti-XSS库(您已经提到过)有什么问题?

他们有全面的 HTML 清理功能,可以根据白名单过滤字符、解析 HTML、根据白名单过滤节点,然后重新生成(安全的)HTML。您可以更改白名单(因为代码已打开),但我不确定您是否愿意。

用法也很简单:

var sanitizedHtml = Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(inputHtml);
于 2010-05-05T13:09:38.333 回答
1

根据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>

另请参阅这篇文章

于 2010-01-12T21:05:23.377 回答