C# Microsoft Web保护库您可以拥有自己的白名单吗+;其他问题

C# Microsoft Web保护库您可以拥有自己的白名单吗+;其他问题,c#,javascript,asp.net-mvc,security,C#,Javascript,Asp.net Mvc,Security,如果Microsoft Web保护库可以有自定义白名单 我还想知道您是否需要做一些特殊的事情来让它与asp.net mvc一起工作 我正在研究它的方法,我明白了 AntiXss..::.GetSafeHtml AntiXss..::.GetSafeHtmlFragment Method AntiXss..::.HtmlEncode Method AntiXss..::.JavaScriptEncode Method AntiXss..::.UrlEncode Method 是有什么东

如果Microsoft Web保护库可以有自定义白名单

我还想知道您是否需要做一些特殊的事情来让它与asp.net mvc一起工作

我正在研究它的方法,我明白了

AntiXss..::.GetSafeHtml 
AntiXss..::.GetSafeHtmlFragment Method 
AntiXss..::.HtmlEncode Method 
AntiXss..::.JavaScriptEncode Method 
AntiXss..::.UrlEncode Method 
是有什么东西可以在一个命令中完成所有这些,还是我必须逐行确定使用哪一个

我必须逐行确定吗 用哪一个

是的,你必须决定用哪一个。但这不是图书馆的问题。每种输出都需要自己的编码

如果你有

<script language="JavaScript" >
alert('<%=  Model.PropertyName %>')
 </script>
<a href="ur"><%= Model.PropertyName %></a>

警报(“”)
您需要对Javascript进行编码(最简单的攻击将使用“不由HtmlEnocde处理的攻击”)

但是如果你有

<script language="JavaScript" >
alert('<%=  Model.PropertyName %>')
 </script>
<a href="ur"><%= Model.PropertyName %></a>

您需要对Html.Encode进行编码

我认为GetSafeThmlFragment可以作为一个Html属性使用,但我在这里并不是这样

我还想知道你需要做什么 有什么特别的东西可以让它工作吗 使用asp.NETMVC

只需将名称空间添加到视图中,并使用AntiXss.HtmlEncode(“”)


我看过一篇文章,其中展示了如何配置ASP.NET MVC以使用AntiXss库来处理,但我认为这没有多大帮助,因为帮助者仍然使用硬编码编码器。

我有点困惑,因为这是我的场景。我有一个丰富的html编辑器,我想制作一个白名单(所以上面的脚本是删除的,而不是编码的)。然后,我只希望允许接受的属性和标记(如粗体)。所以我想知道XSS能做到这一点吗?我能在接受列表中添加粗体吗?或者我必须在自己的列表中继续使用HtmlAlityPack吗?第二,getSafeHtml或SafeHtmlFragement中的任何一个都同时执行标记、属性和URL。我宁愿让它为这3个做所有的编码,因为就像我用htmlAgilityPack制作的白名单一样,我的属性中缺少防御。好像它没有考虑href标记中的javascript之类的废话。GetSafetHtmlFragment应按照以下要求执行工作。如果无法更改白名单,并且您不想自己编译库,您可以这样做:Html编码白名单中的项目。将文本中白名单中出现的原始标记替换为编码的对应标记。清理文本。在经过净化的文本中,用未编码的令牌替换白名单中的编码令牌。如果我不能用MS Library创建自定义白名单,那么我将继续使用htmlAgilitPack。