我遇到了一种常见情况,即我有使用 HTML 子集的用户输入(使用 tinyMCE 输入)。我需要对 XSS 攻击进行一些服务器端保护,并且正在寻找人们用来执行此操作的经过良好测试的工具。在 PHP 方面,我看到很多像 HTMLPurifier 这样的库可以完成这项工作,但我似乎在 .NET 中找不到任何东西。
我基本上是在寻找一个库来过滤到标签的白名单,这些标签上的属性,并用“困难”属性做正确的事情,比如 a:href 和 img:src
我在http://refactormycode.com/codes/333-sanitize-html上看到了 Jeff Atwood 的帖子,但我不知道它是最新的。它与网站当前使用的内容有任何关系吗?无论如何,我不确定我是否对尝试正则表达式输出有效输入的策略感到满意。
这篇博文列出了一个似乎更引人注目的策略:
此方法实际上是将 HTML 解析为 DOM,对其进行验证,然后从中重建有效的 HTML。如果 HTML 解析可以明智地处理格式错误的 HTML,那就太好了。如果没有,没什么大不了的——我可以要求格式良好的 HTML,因为用户应该使用 tinyMCE 编辑器。无论哪种情况,我都在重写我所知道的安全、格式良好的 HTML。
问题是这只是一个描述,没有链接到任何实际执行该算法的库。
有这样的图书馆吗?如果没有,什么是好的 .NET HTML 解析引擎?应该使用哪些正则表达式来执行额外的验证 a:href、img:src?我在这里错过了其他重要的事情吗?
我不想在这里重新实现一个越野车轮子。当然,那里有一些常用的库。有任何想法吗?