我正在开始一个使用 asp.net mvc 面向公众的项目。我知道那里有大约 10 亿个 php、python 和 ruby html 消毒剂,但是有没有人指出 .net 中有什么好的东西?你对外面的东西有什么经验?我知道 stackoverflow 是一个在 asp.net 中完成的网站,它允许自由格式的 HTML,它使用什么?
Google Ninja
问问题
24476 次
6 回答
24
HtmlSanitizer
来源:https ://github.com/mganss/HtmlSanitizer
相当强大的消毒剂。它理解并且可以清理内联样式,但没有可以处理 <style> 块的解析器,因此它会剥离它们。它肯定达到甚至可能超出了微软的 AntiXSS 在被放弃之前所处的水平。
于 2013-09-26T07:43:44.493 回答
8
于 2008-12-04T20:13:49.697 回答
4
根据您的问题,我有以下建议:
- 您希望允许自由格式的 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 回答