在Anti-XSS添加后,VS 2008崩溃了

时间:2010-08-14 12:56:44

标签: asp.net-mvc visual-studio asp.net-mvc-2 xss antixsslibrary

你好我正在使用带有asp.net mvc 2的visual studio 2008.我需要反xss库来限制由富文本编辑器(轻量级RTE)生成的输入。 我想使用AntiXss.GetSafeHtmlFragment(输入);功能

问题是VS 2008在引用反xss dll之后崩溃了(它在第一次运行正常但是崩溃了。)

有人如何解决这个问题? 如果没有,有人可以指向我工作的altrenative(我尝试使用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;
            }
        }

谢谢!

1 个答案:

答案 0 :(得分:1)

我发现为什么VS 2008在引用AntiXss时会崩溃 - 这是因为VS 2008的电源命令插件。删除它并且没关系。