HTML清理 - 糟糕的标记?

时间:2009-01-05 20:21:50

标签: asp.net html

我一直在扫描一些关于清理HTML标记字符串的讨论,以便在页面上重新显示(例如博客评论)。在过去,我只是单方面逃过了重新展示的标记。

有没有人知道是否有任何解决方案不仅仅是删除“不安全”标签?

如果标记无效怎么办?例如,您如何预防和解除< b>粗体标记面对页面上的所有文本?

似乎Stackoverflow处理这个问题。

未关闭的'b'标签示例

感谢。

3 个答案:

答案 0 :(得分:4)

Stackoverflow使用textile或非常类似的东西。

纺织品或多或少保证吐出有效的(x)html,通过消毒用户输入来改善许多典型问题。

答案 1 :(得分:0)

检查此代码:

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

  

消毒任何可能的方法   来自提供的原始的危险标签   使用基于白名单的HTML输入   方法,留下“安全”的HTML   标签

答案 2 :(得分:0)

Html Agility Pack可能是一个很好的起点,因为它声称对格式错误和格式错误的HTML非常宽容。最重要的是,您可能希望制定一些规则来进行进一步的消毒。最后,将获得的DOM序列化为纯HTML代码。

我遇到了同样的问题,并在Html Agility Pack之上构建了基于规则的HTML清理程序。它允许您展平或移除标记,转换标记,例如将 b 替换为标记并限制属性使用。如果想要快速完成,请查看HtmlRuleSanitizer的源代码代码,或者只需获取NuGet package