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

时间:2011-08-23 23:07:52

标签: jsf-2 html-encode

我正在努力升级一个用PHP编写的旧的Web程序作为后端。

数据库中充满了像<P><STRONG>

这样的文字

这显然是<P><STRONG><FONT size=4>

的编码形式

如何让JSF文件正确呈现?将它作为转义文本输出给我第一行,未转义的文本给我第二行。

我希望HTML在文档中显示为html ,我会接受这样做的风险:)

我最好解码数据库中的文本吗?我不确定这是我希望将来使用的格式,但我对HTML实体的经验很少,我不确定最好的长期路线。

在这里欢迎任何从技术知识到明智的老圣人的谣言。

1 个答案:

答案 0 :(得分:4)

  

如何让JSF文件正确呈现?将它作为转义文本输出给我第一行,未转义的文本给我第二行。

在EL函数(StringEscapeUtils#unescapeHtml())中换行example here并将其显示在<h:outputText> escape="false"中。

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

该函数会将&lt;变为<,依此类推,escape="false"将阻止JSF重新转义它,以防止用户控制的输入被字面解释为哪个可以可能会创建XSS漏洞。


  

我最好解码数据库中的文字吗?我不确定这是我希望将来使用的格式,但我对HTML实体的经验很少,我只是不确定最佳的长期路线。

根本不在数据库中存储HTML是最佳选择。如果真的没有其他选择,那么我会选择直接在数据库中解码它们。