我一直在扫描一些关于清理HTML标记字符串的讨论,以便在页面上重新显示(例如博客评论)。在过去,我只是单方面逃过了重新展示的标记。
有没有人知道是否有任何解决方案不仅仅是删除“不安全”标签?
如果标记无效怎么办?例如,您如何预防和解除< b>粗体标记面对页面上的所有文本?
似乎Stackoverflow处理这个问题。
未关闭的'b'标签示例
感谢。
答案 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。