こんにちは、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;
}
}
ありがとうございました!