我应该如何处理 JSF 中的 HTML 实体
我正在努力升级一个用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
换行
StringEscapeUtils#unescapeHtml()
在 EL 函数中 (示例)并将其显示在
与escape="false"
。该函数会将
<
转换为<
等等,escape="false"
将阻止 JSF 重新转义它为了防止用户控制的输入被字面解释,这可能会造成 XSS 漏洞。DB 是最好的选择。如果确实没有其他选择,那么我会选择直接在数据库中解码它们。
Wrap
StringEscapeUtils#unescapeHtml()
in an EL function (example here) and display it in an<h:outputText>
withescape="false"
.The function will turn
<
to<
and so on, theescape="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.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.