是否有针对.NET的全面Html清理程序/ Anti-Xss库,它还具有已定义的白名单。我知道微软Anti-Xss是一个很好的起点,但它需要一个很好的白名单,允许html标签和CSS。有谁知道什么?
答案 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("<b>", "<b>");
sb.Replace("</b>", "");
sb.Replace("<i>", "<i>");
sb.Replace("</i>", "");
Response.Write(sb.ToString());
}
</script>
另见this article。