HTML清洗-糟糕的标记?

4
我一直在浏览有关在页面上重新显示HTML标记字符串(例如博客评论)时对其进行清理的讨论。过去,我只是单方面地转义标记以便重新显示。
是否有任何解决方案超越了仅删除“不安全”的标记?
如果标记无效怎么办?例如,如何防止未关闭的<b>标签在页面上将其后的所有文本都加粗?
看起来Stackoverflow已经处理了这个问题。
未关闭的'b'标记示例
谢谢。

我认为这是Jeff喜欢的SO的一部分! - Mehrdad Afshari
3个回答

4

Stackoverflow使用textile或类似的东西。

Textile几乎可以保证生成有效的(x)html,缓解了许多清理用户输入时遇到的问题。


0

Html Agility Pack 可能是一个很好的起点,因为它声称对于格式错误和畸形的 HTML 非常宽容。此外,您可能需要构建一些规则进行进一步的消毒。最终,您将获得的 DOM 序列化回纯 HTML 代码。

我面临了与您相同的问题,并在 Html Agility Pack 基础上构建了基于规则的 HTML 消毒器。它允许您展平或删除标记,转换标记,例如使用 strong 标记替换 b,并限制属性使用。查看 HtmlRuleSanitizer 的源代码以获取想法,或者如果您想快速完成,请获取 NuGet package


0
检查这段代码:

清理HTML,我认为StackOverflow在某个地方使用它...

一种使用基于白名单的方法来清理提供的原始HTML输入中任何可能存在的危险标签的方法,只留下“安全”的HTML标签。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接