2012-04-02 33 views
3

私のjsf webapplicationでは、メッセージを出力するためにmessages.propertiesを使用しています。このテキストはHTMLの改行を持つことができますので、outputtextをフォーマットしてください。JSF 2.0;エスケープ= "偽" XSSを防ぐための代替?

私はoutputtextにescape = "false"属性を設定しても問題ありません。

この属性の値が「false」の場合、vor XSS(クロスサイトスクリプティング)が防止されないため、この属性を削除してデフォルト値「true」を使用します。

だから、私は、この例のように、私のmessages.propertiesのプロパティを区切るために、すべてのテキスト行を分割したいいけない:後

mytext = This is my text<br />with line break and user value {0}... 

mytext1 = This is my text 
mytext2 = with line break and user value {0}... 

は以外のどのような方法は、ありますエスケープ= "偽"しかし、それはxssから防ぐ?

ありがとうございました!

+1

あなたはユーザーのみコンテンツを表示する際、コメントのように、XSSを気にする必要があります。あなた自身のテキスト(プロパティから)の場合は、そこに悪意のあるコードを置かないでください:) – DRCB

+0

いいえ、そこにユーザーコンテンツがあれば?私は自分の質問を更新しました:-) – Tobi

+0

これらは読み取り専用のコンポーネントなので、どのようにして誰にXSSすることができますか?私は出力テキストがクライアントから送られた値を気にするとは思わない。私が間違っていると、XSSに関心を持ち、XSSを防止するJSFコンポーネントをいつでも拡張できます。 Tomcat 7.0を使用している場合は、XSS防止機能を提供します。 – DaTroop

答えて

4

ちょうどhttp://java.sun.com/jsp/jstl/functions名前空間にstandard jstl functionsを使用して、ユーザ指定されたパラメータをエスケープすることが可能です:

<h:outputFormat value="#{bundle.myMessage}" escape="false"> 
    <f:param value="#{fn:escapeXml(param)}"/> 
</h:outputFormat> 
+0

それはかなりいいね!すぐにこれを試してみよう!ありがとう! – Tobi

1

ソースからユーザーが入力または編集できないHTMLを出力している場合、XSSは発生しません。この場合、escape="false"を安全に使用できます。

+0

いくつかの出力テキストで私はいくつかのユーザーコンテンツを持っています...私の質問を更新しました – Tobi

関連する問題