我应该如何处理 JSF 中的 HTML 实体

发布于 2024-11-30 23:38:37 字数 427 浏览 0 评论 0原文

我正在努力升级一个用 PHP 编写的旧 Web 程序,并以 MySQL 数据库作为后端。

数据库中充满了这样的文本

<STRONG>

显然是

< 的编码形式;FONT size=4>

如何获取 JSF 文件来正确呈现该文件?将其输出为转义文本给我第一行,未转义文本给我第二行。

我希望 HTML 在文档中显示为 html,我愿意承担这样做的风险:)

我是否最好对数据库中的文本进行解码?我不确定这是我将来想要使用的格式,但我对 HTML 实体的经验很少,所以我不确定最佳的长期路线。

从技术知识到睿智的老圣贤的闲言碎语,任何内容都在这里受到欢迎。

I'm working to upgrade an old web program written in PHP with a MySQL database as the backend.

The database is full of text like this <P><STRONG>

Which obviously is an encoded form of <P><STRONG><FONT size=4>

How can I get a JSF file to render that properly ? Outputting it as escaped text gives me the 1st line, and unescaped text gives me the 2nd line.

I want the HTML to appear as html in the document, I'll accept the risk of doing so :)

Am I better off decoding the text in the database ? I'm not sure that this is a format I want to work with in the future, but I have so little experience with HTML entities that I'm just not sure the best long-term route.

Anything from technical knowhow to the ramblings of wise old sages is welcome here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北城半夏 2024-12-07 23:38:37

如何获取 JSF 文件来正确呈现该文件?将其输出为转义文本给我第一行,未转义文本给我第二行。

换行 StringEscapeUtils#unescapeHtml() 在 EL 函数中 (示例)并将其显示在escape="false"

<h:outputText value="#{util:unescapeHtml(bean.value)}" escape="false" />

该函数会将 < 转换为 < 等等,escape="false" 将阻止 JSF 重新转义它为了防止用户控制的输入被字面解释,这可能会造成 XSS 漏洞。


解码数据库中的文本是否会更好?我不确定这是我将来想要使用的格式,但我对 HTML 实体的经验很少,所以我不确定最佳的长期路线。

DB 是最好的选择。如果确实没有其他选择,那么我会选择直接在数据库中解码它们。

How can I get a JSF file to render that properly ? Outputting it as escaped text gives me the 1st line, and unescaped text gives me the 2nd line.

Wrap StringEscapeUtils#unescapeHtml() in an EL function (example here) and display it in an <h:outputText> with escape="false".

<h:outputText value="#{util:unescapeHtml(bean.value)}" escape="false" />

The function will turn < to < and so on, the escape="false" will prevent JSF from re-escaping it in order to prevent user-controlled input from being literally interpreted which can possibly create XSS holes.


Am I better off decoding the text in the database? I'm not sure that this is a format I want to work with in the future, but I have so little experience with HTML entities that I'm just not sure the best long-term route.

Not storing HTML in the DB at all is the best option. If there is really no other option, then I'd opt for decoding them straight in the DB.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文