17

私は JSF 2.0 で PrimeFaces を使用して 1 つのアプリケーションを構築しています。<p:editor>ユーザーがリッチテキストを作成できるようにするために、PrimeFacesコンポーネントを使用しています。しかし、このコンポーネントの出力は、次のような HTML ソースです。

String text = "<p>This text <i>contains</i> some <b>HTML</b> code.</p>";

これを<h:outputText>以下のように表示すると:

<h:outputText value="#{bean.text}" />

次に、HTML コードをプレーン テキストとして表示します。

<p>このテキストには、いくつかの <b>HTML</b> コードが <i>含まれています</i>。</p>

HTML ソースを解釈して、<i>実際に斜体や<b>太字で表示するコンポーネントはありますか?

このテキストにはHTMLコードが含まれています。

4

1 に答える 1

35

XSS 攻撃の穴を防ぐために、JSF はデフォルトで HTML をバッキング Bean プロパティからエスケープします。これを無効にするには、 のescape属性を に設定するだけ<h:outputText>ですfalse

<h:outputText ... escape="false" />

この方法では、HTML はエスケープされず、Web ブラウザーによって解釈されます。


具体的な問題とは関係ありませんが、ここでは基本的にユーザー制御の入力をエスケープせずに再表示しているため、XSS 攻撃に注意してください。事前に消毒した方がいいかもしれません。

于 2012-09-30T17:05:26.233 に答える