使用HTML代码将string注入和解释到JSF页面的组件
我使用PrimeFaces和JSF 2.0来构build一个应用程序。 我正在使用PrimeFaces <p:editor>
组件来使用户能够创build富文本。 但是这个组件的输出是这样的HTML源代码:
String text = "<p>This text <i>contains</i> some <b>HTML</b> code.</p>";
当我在<h:outputText>
显示如下:
<h:outputText value="#{bean.text}" />
然后以纯文本forms显示HTML代码:
<p>这个文本<i>包含</ b>一些<b> HTML </ b>代码。</ p>
是否有任何可以解释HTML源代码的组件,例如<i>
实际上以斜体显示, <b>
为粗体?
这个文本包含一些HTML代码。
JSF默认从backing bean属性转义HTML,以防止XSS攻击漏洞。 要禁用此function,只需将<h:outputText>
的escape
属性设置为false
。
<h:outputText ... escape="false" />
这样HTML将不会被转义,因此将被网页浏览器解释。
与具体问题无关 ,请注意XSS攻击,因为您在这里基本上是重新显示用户控制的input。 您可能需要事先进行消毒。
- XSS背后的一般概念是什么?
- JSF中的CSRF,XSS和SQL注入攻击防护
- JSF的服务器端的HTML清理器/清理
- 在h:outputText中转义一切,但换行符