是否有任何JSF实用工具包或PrimeFaces/OmniFaces等库中可用的HTML清理程序或清理方法?
我需要通过p:编辑器清理用户的HTML输入,并使用escape="true"
stackexchange样式显示安全的HTML输出.在显示HTML之前,我正在考虑将已清理的输入数据存储到数据库中,以便它可以安全使用,escape="true"
并且XSS不是危险的.
为了实现这一点,您基本上需要一个独立的HTML解析器.HTML解析相当复杂,其任务和责任超出了JSF,PrimeFaces和OmniFaces的范围.你应该只抓住许多现有的HTML解析库中的一个.
一个例子是Jsoup,它甚至还有一个单独的方法,用于针对以下内容清理 HTML的特定目的Whitelist
:Jsoup#clean()
.例如,如果要允许一些没有图像的基本HTML,请使用Whitelist.basic()
:
String sanitizedHtml = Jsoup.clean(rawHtml, Whitelist.basic());
一种完全不同的替代方法是使用特定的文本格式化语法,例如Markdown(此处也使用).基本上所有这些解析器都会清理HTML下的内容.一个例子是Pegdown.也许这就是你说"堆栈交换风格"时的实际意思.
至于在DB节省,你最好保存都在2分独立的文本列生和解析的形式.编辑期间应重新显示原始表单.编辑原始表单时,应在后台更新已解析的表单.在显示期间,显然只显示解析后的表单escape="false"
.
Markdown或HTML