【问题标题】:Server side HTML sanitizer/cleanup for JSFJSF 的服务器端 HTML 清理程序/清理程序
【发布时间】:2014-06-03 17:30:38
【问题描述】:

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

我需要清理用户通过 p:editor 输入的 HTML 并使用 escape="true" 显示安全的 HTML 输出,遵循 stackexchange 样式。在显示 HTML 之前,我正在考虑将经过处理的输入数据存储到数据库中,以便与 escape="true" 一起安全使用,并且 XSS 不是危险。

【问题讨论】:

标签: jsf primefaces omnifaces html-sanitizing


【解决方案1】:

为了实现这一点,您基本上需要一个独立的HTML parser。 HTML 解析相当复杂,其任务和责任超出了 JSF、PrimeFaces 和 OmniFaces 的范围。您应该只获取众多现有 HTML 解析库之一。

一个例子是Jsoup,它甚至有一个单独的方法用于针对Safelist净化HTML:Jsoup#clean()。例如,如果你想允许一些没有图像的基本 HTML,使用Safelist.basic()

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

一个完全不同的替代方法是使用特定的文本格式语法,例如Markdown(这里也使用)。基本上所有这些解析器也会在后台清理 HTML。一个例子是CommonMark。也许这就是您说“stackexchange 样式”时的实际意思。

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

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2010-12-10
    • 2011-10-21
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多