VS 2008 падает после добавления Anti-XSS - PullRequest
0 голосов
/ 14 августа 2010

Здравствуйте. Я использую Visual Studio 2008 с asp.net mvc 2. Мне нужна библиотека anti xss для сантитизации входных данных, сгенерированных редактором форматированного текста (облегченный RTE).Я хочу использовать AntiXss.GetSafeHtmlFragment (input);function.

проблема в том, что VS 2008 аварийно завершает работу после того, как я ссылаюсь на анти-xss dll (в первый раз он работает нормально, но потом падает).

Кто-нибудь знает, как решить эту проблему?Если нет, то кто-нибудь может указать мне на работающую альтернативу (я попытался использовать пакет гибкости 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 Ответ

1 голос
/ 15 августа 2010

Я обнаружил, почему VS 2008 дает сбой при обращении к AntiXss - это из-за надстройки команд питания для VS 2008. Удалил его, и это нормально.

...