首页 文章

JSF的服务器端HTML清理程序/清理

提问于
浏览
1

是否有任何JSF实用工具包或PrimeFaces / OmniFaces等库中可用的HTML清理程序或清理方法?

我需要通过p:编辑器清理用户的HTML输入,并使用 escape="true" 显示安全的HTML输出,遵循stackexchange样式 . 在显示HTML之前,我正在考虑将已清理的输入数据存储到数据库中,以便可以安全地使用 escape="true" 和XSS,这不是一个危险 .

1 回答

  • 5

    为了实现这一点,你基本上需要一个独立的HTML parser . HTML解析相当复杂,其任务和责任超出了JSF,PrimeFaces和OmniFaces的范围 . 你应该只 grab 许多现有的HTML解析库中的一个 .

    一个例子是Jsoup,它甚至有一个单独的方法用于针对WhitelistJsoup#clean()清理HTML的特定目的 . 例如,如果要允许某些没有图像的基本HTML,请使用Whitelist.basic()

    String sanitizedHtml = Jsoup.clean(rawHtml, Whitelist.basic());
    

    一种完全不同的替代方法是使用特定的文本格式化语法,例如Markdown(此处也使用) . 基本上所有这些解析器还会清理HTML下的内容 . 一个例子是Pegdown . 也许这就是你说"stackexchange style"时的实际意思 .

    至于保存DB,最好将原始表单和解析表单保存在2个单独的文本列中 . 在编辑期间应重新显示原始表单 . 在编辑原始表单时,应在后台更新已解析的表单 . 在显示期间,显然只显示带有 escape="false" 的已解析表单 .

    另见:

相关问题