我正在努力升级一个用PHP编写的旧的Web程序作为后端。
数据库中充满了像<P><STRONG>
这显然是<P><STRONG><FONT size=4>
如何让JSF文件正确呈现?将它作为转义文本输出给我第一行,未转义的文本给我第二行。
我希望HTML在文档中显示为html ,我会接受这样做的风险:)
我最好解码数据库中的文本吗?我不确定这是我希望将来使用的格式,但我对HTML实体的经验很少,我不确定最好的长期路线。
在这里欢迎任何从技术知识到明智的老圣人的谣言。
答案 0 :(得分:4)
如何让JSF文件正确呈现?将它作为转义文本输出给我第一行,未转义的文本给我第二行。
在EL函数(StringEscapeUtils#unescapeHtml()
)中换行example here并将其显示在<h:outputText>
escape="false"
中。
<h:outputText value="#{util:unescapeHtml(bean.value)}" escape="false" />
该函数会将<
变为<
,依此类推,escape="false"
将阻止JSF重新转义它,以防止用户控制的输入被字面解释为哪个可以可能会创建XSS漏洞。
我最好解码数据库中的文字吗?我不确定这是我希望将来使用的格式,但我对HTML实体的经验很少,我只是不确定最佳的长期路线。
根本不在数据库中存储HTML是最佳选择。如果真的没有其他选择,那么我会选择直接在数据库中解码它们。