您好,我正在使用带有 asp.net mvc 2 的 Visual Studio 2008。我需要反 xss 库来清理由富文本编辑器(轻量级 RTE)生成的输入。我想使用 AntiXss.GetSafeHtmlFragment(input); 功能。
问题是在我引用反 xss dll 后 VS 2008 崩溃(它在第一次工作正常但它崩溃了)。
有人如何解决这个问题吗?如果没有,有人可以指出一个可行的替代方案(我尝试在允许白名单的同时使用 html 敏捷包,但我只设法允许没有属性的标签)。
html 敏捷过滤器的代码 -
public static string Filter(string html, string[] allowedTags)
{
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
StringBuilder buffer = new StringBuilder();
Process(doc.DocumentNode, buffer, allowedTags);
return buffer.ToString();
}
static string[] RemoveChildrenOfTags = new string[] { "script", "style" };
static void Process(HtmlNode node, StringBuilder buffer, string[] allowedTags)
{
switch (node.NodeType)
{
case HtmlNodeType.Text:
buffer.Append(HttpUtility.HtmlEncode(((HtmlTextNode)node).Text));
break;
case HtmlNodeType.Element:
case HtmlNodeType.Document:
bool allowedTag = allowedTags.Contains(node.Name.ToLower());
if (allowedTag)
buffer.AppendFormat("<{0}>", node.Name);
if (!RemoveChildrenOfTags.Contains(node.Name))
foreach (HtmlNode childNode in node.ChildNodes)
Process(childNode, buffer, allowedTags);
if (allowedTag)
buffer.AppendFormat("</{0}>", node.Name);
break;
}
}
谢谢!