gpt4 book ai didi

jsf - 用于 JSF 的服务器端 HTML sanitizer /清理

转载 作者:行者123 更新时间:2023-12-04 02:07:31 25 4
gpt4 key购买 nike

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

我需要通过 p:editor 清理用户输入的 HTML 并使用 escape="true" 显示安全的 HTML 输出, 遵循 stackexchange 风格。在显示 HTML 之前,我想将经过 sanitizer 的输入数据存储到数据库中,以便可以安全地使用 escape="true"并且 XSS 不是危险。

最佳答案

为了实现这一点,您基本上需要一个独立的 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 风格”时的实际意思。
至于保存在数据库中,您最好将原始和解析的表单保存在 2 个单独的文本列中。在编辑期间应重新显示原始表单。当原始表单被编辑后,解析的表单应该在后台更新。显示时,显然只显示解析后的表单 escape="false" .
也可以看看:
  • Markdown or HTML
  • 关于jsf - 用于 JSF 的服务器端 HTML sanitizer /清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23167104/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com