26

我正在开始一个使用 asp.net mvc 面向公众的项目。我知道那里有大约 10 亿个 php、python 和 ruby​​ html 消毒剂,但是有没有人指出 .net 中有什么好的东西?你对外面的东西有什么经验?我知道 stackoverflow 是一个在 asp.net 中完成的网站,它允许自由格式的 HTML,它使用什么?

4

6 回答 6

24

HtmlSanitizer

来源:https ://github.com/mganss/HtmlSanitizer

相当强大的消毒剂。它理解并且可以清理内联样式,但没有可以处理 <style> 块的解析器,因此它会剥离它们。它肯定达到甚至可能超出了微软的 AntiXSS 在被放弃之前所处的水平。

于 2013-09-26T07:43:44.493 回答
8

https://blog.stackoverflow.com/2008/06/safe-html-and-xss/

于 2008-12-04T20:13:49.697 回答
4

HtmlRuleSanitizer

根据您的问题,我有以下建议:

  • 您希望允许自由格式的 HTML,因此您需要一个能够指定一组允许的标签、属性和/或 CSS 类的解决方案。
  • 通过允许自由格式的 HTML,您可能还必须处理格式错误的 HTML,因为用户会犯错误(有意或无意)。因此,您需要一个基于容错分析器(例如Html Agility Pack )的解决方案。
  • 您将需要采用白名单方法,因为黑名单消毒剂不会保护您免受任何新 HTML 规范的影响。此外,由于 HTML 规范的大小,很难保证黑名单首先涵盖所有情况。

我遇到了同样的问题并构建了 HtmlRuleSanitizer,它是基于 Html Agility Pack 之上的基于白名单规则的 HTML 清理程序。

于 2015-09-29T08:20:21.953 回答
3

这里有ac#版本

于 2011-11-17T23:41:02.520 回答
3

这是一个由微软构建的。http://wpl.codeplex.com/

var cleanHtml = Sanitizer.GetSafeHtml(unsafeHtml);
于 2011-12-12T04:42:42.640 回答
1

我们也可以使用

AntiXss.GetSafeHtmlFragments

通过解析 HTML 片段来清理输入,将这个清理器用于富内容,以确保它不包含任何有害脚本并且可以安全地显示在浏览器上。对于文本输入(非富内容)使用 AntiXss.HtmlEncode或任何其他等效的 html 编码器。这里是丰富内容的示例。

 string mal = "<IMG NAME = 'myPic' SRC = 'images / myPic.gif' onerror='alert(1)' onerror='alert(1) ><div bottommargin = 150 ondblclick = 'alert('double clicked!')' >< p > Double - click anywhere in the page.</p> </div> ";
                var cleanHtml = Sanitizer.GetSafeHtmlFragment(mal);
                Console.Write(cleanHtml);
                Console.Read(); 

注意:从 nugetpackage manager 下载 AntiXSS 库,并将此命名空间 Microsoft.Security.Application 包含在源代码中

于 2018-06-15T08:07:19.847 回答