C# Microsoft反XSS库编码与符号?

C# Microsoft反XSS库编码与符号?,c#,asp.net-mvc,antixsslibrary,C#,Asp.net Mvc,Antixsslibrary,我目前正在使用Microsoft AntiXSS库,并使用GetSafeThmlFragment方法,如下所示: public static string SanitizeHtml(this string s) { return Sanitizer.GetSafeHtmlFragment(s); } 但是,如果我传入如下字符串: 黑白 。。。它对符号进行编码,因此它变成: black&;白色 这是图书馆的正常行为吗?有没有办法阻止它对这个字符进行编码 这是图书馆的正常行为吗 是的

我目前正在使用Microsoft AntiXSS库,并使用
GetSafeThmlFragment
方法,如下所示:

public static string SanitizeHtml(this string s)
{
    return Sanitizer.GetSafeHtmlFragment(s);
}
但是,如果我传入如下字符串:

黑白

。。。它对符号进行编码,因此它变成:

black&;白色

这是图书馆的正常行为吗?有没有办法阻止它对这个字符进行编码

这是图书馆的正常行为吗


是的,它修复了您的HTML,因为您正在使用
getSafeThmlFragment
。否则,您将得到无效的HTML片段。在HTML中,
&
字符具有特殊含义。我认为这种行为无法改变。

我认为这不是最好的解决方案。如果您使用HTML.Raw(),那么您就容易受到XSS攻击,除非您能够绝对确保该字符串始终是安全的,并且对于HTML.Raw()的所有使用都是安全的

我相信这是正常的行为,因为您使用的是
getSafeThmlFragmet
我明白了-那么,在输出用户生成的内容(安全)时,但在显示“&”字符(而不是编码的等效字符)时,正常的做法是什么?我应该使用不同的库/方法吗?@marcusstarnes,如果你想在网页(HTML)中显示它,你应该对它进行编码。如果要在网页中显示
&
字符,应使用
&这正是AntiXss库所做的。好吧,我理解,但我的问题是实际字符&;正在渲染到屏幕上。我使用的是Razor,所以我认为解决这个问题的唯一方法是用Html.Raw(“黑白”)包装任何输出,对吗?我只希望&'s显示为&'s而不是&;但是仍然使用AntiXss库,以确保在渲染之前剥离任何恶意脚本等?我是否应该直接调用@Html.Raw(getSafeThmlFragment(“black&white”)?@marcusstarnes,这正是您需要的:
@Html.Raw
,如果您想避免Html编码。若你们在最初的问题中说你们正在使用剃须刀,那个么这一点在早些时候就已经清楚了。