Asp.net mvc VS 2008在添加反XSS后崩溃

Asp.net mvc VS 2008在添加反XSS后崩溃,asp.net-mvc,visual-studio,asp.net-mvc-2,xss,antixsslibrary,Asp.net Mvc,Visual Studio,Asp.net Mvc 2,Xss,Antixsslibrary,您好,我正在使用visual studio 2008和asp.net mvc 2。我需要反xss库来对富文本编辑器(轻量级RTE)生成的输入进行santitize。 我想使用AntiXss.GetSafeHtmlFragment(输入);功能 问题是VS 2008在我引用anti-xss dll后崩溃(它在第一次运行时很好,但崩溃的时间比它长) 有人知道如何解决这个问题吗? 如果没有,有人能告诉我一个正在工作的altrenative(我尝试使用html agility pack,同时允许使用白名

您好,我正在使用visual studio 2008和asp.net mvc 2。我需要反xss库来对富文本编辑器(轻量级RTE)生成的输入进行santitize。 我想使用AntiXss.GetSafeHtmlFragment(输入);功能

问题是VS 2008在我引用anti-xss dll后崩溃(它在第一次运行时很好,但崩溃的时间比它长)

有人知道如何解决这个问题吗? 如果没有,有人能告诉我一个正在工作的altrenative(我尝试使用html agility pack,同时允许使用白名单,但我只允许使用没有属性的标记)

html agility筛选器的代码-

  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;
            }
        }
公共静态字符串过滤器(字符串html,字符串[]allowedTags)
{
HtmlDocument doc=新的HtmlDocument();
doc.LoadHtml(html);
StringBuilder缓冲区=新的StringBuilder();
流程(doc.DocumentNode、缓冲区、allowedTags);
返回buffer.ToString();
}
静态字符串[]RemoveChildrenOfTags=新字符串[]{“脚本”,“样式”};
静态无效进程(HtmlNode节点、StringBuilder缓冲区、string[]allowedTags)
{
开关(node.NodeType)
{
案例HtmlNodeType.Text:
Append(HttpUtility.HtmlEncode(((HtmlTextNode)node.Text));
打破
案例HtmlNodeType.Element:
案例HtmlNodeType.文档:
bool allowedTag=allowedTags.Contains(node.Name.ToLower());
如果(允许标记)
AppendFormat(“,node.Name”);
如果(!RemoveChildrenOfTags.Contains(node.Name))
foreach(node.ChildNodes中的HtmlNode-childNode)
进程(子节点、缓冲区、allowedTags);
如果(允许标记)
AppendFormat(“,node.Name”);
打破
}
}

谢谢大家!

我发现了为什么VS2008在引用AntiXss时会崩溃——这是因为VS2008的电源命令。把它取下来就没事了