0

こんにちは、Visual Studio 2008 と asp.net mvc 2 を使用しています。リッチ テキスト エディター (軽量 RTE) によって生成された入力をサニタイズするには、アンチ xss ライブラリが必要です。AntiXss.GetSafeHtmlFragment(input); を使用したい 関数。

問題は、anti 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;
            }
        }

ありがとうございました!

4

1 に答える 1

1

AntiXss を参照すると、VS 2008 がクラッシュする理由がわかりました。これは、VS 2008 のパワー コマンド アドインが原因です。削除して問題ありません。

于 2010-08-15T15:56:12.107 に答える