是否有HtmlPurifier的.NET实现(php)

时间:2010-01-12 18:09:15

标签: .net htmlpurifier

是否有针对.NET的全面Html清理程序/ Anti-Xss库,它还具有已定义的白名单。我知道微软Anti-Xss是一个很好的起点,但它需要一个很好的白名单,允许html标签和CSS。有谁知道什么?

2 个答案:

答案 0 :(得分:10)

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

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

用法也很简单:

var sanitizedHtml = Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment(inputHtml);

答案 1 :(得分: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>

另见this article