AntiXss.HtmlEncode vs AntiXss.GetSafeHtmlFragment

Bik*_*iki 5 html asp.net-mvc

谁能告诉我这两者之间的区别? AntiXss.HtmlEncode()VSAntiXss.GetSafeHtmlFragment()

Bri*_*vez 9

HtmlEcode实际上编码标签:

AntiXss.HtmlEncode("<b>hello</b><script>");
//Output: &lt;b&gt;hello&lt;/b&gt;&lt;script&gt;
Run Code Online (Sandbox Code Playgroud)

GetSafeHtmlFragment(AntiXss v4.0)返回标记完整的HTML片段:

Sanitizer.GetSafeHtmlFragment("<b>hello2</b><script>")
//Output: <b>hello2</b>
Run Code Online (Sandbox Code Playgroud)

更新

许多人认为最新版本的微软AntiXSS库已被破坏.我已经开始使用HTML Sanitizer作为一个不错的替代品.

  • 好吧,GetSafeHtmlFragment并没有真正返回完整的HTML片段,它做了两件事: - 正确形成格式错误的HTML - 删除不在白名单上的HTML标签 (2认同)

小智 7

还应该提到的是,它也会antixss.GetSafeHtmlFragment对字符进行编码.双引号更改为&quot;.加号变成&#43;等.


小智 5

我还可以添加样式名称前的x_GetSafeHtmlFragment弄乱CSS ,并删除HTML实体编码。这不是一件美丽的事情。

赫克