ビューパラメータを定義するJSF2 XHTMLページがあります。ブックマーク可能なURLを持つことができます。 XHTMLページはパラメータが含まれます。JSF2リダイレクトwith includeViewParamsを使用すると、テキストフィールドに解決されるEL式を入力できます。
<h:form id="some-id">
<h:inputText value="#{nbsearchpage.searchName}" />
<h:commandButton value="search" action="#{nbsearchpage.search}" />
</h:form>
そして最後に、アクションメソッドの検索:同じページで
<f:metadata>
<f:viewParam name="searchName" value="#{nbsearchpage.searchName}" />
<!-- More view parameters omitted here for brevity -->
<f:event listener="#{nbsearchpage.searchPreRender}" type="javax.faces.event.PreRenderViewEvent" />
</f:metadata>
を、私は、テキストフィールドとユーザーがsearchNameを変更することを可能にするボタンがありますnbsearchpage Beanの()は同じページに戻りますが、パラメータを含めて:
?faces-redirect=true&includeViewParams=true
これは、ユーザーに素晴らしいURLを提供します。ユーザーが検索フィールドに「IBM」と入力すると、URLは
?searchName=IBM
にリダイレクトされます。完全に機能します。しかし、ユーザはsearchNameテキストフィールドにEL式を入力することができ、EL式が評価されます。例えば。ユーザーがテキストフィールドで「#{2 + 2}」に入ったとき、URLは
?searchName=4
にリダイレクトされ、これは、私たちは、やってユーザーが伴うセキュリティへのEL式を入力できるようにすべきではないと考えるものです理由。私はGlassfish 3.1.1を使用しています。
この自動EL解決を防ぐにはどうすればよいですか?私は、JSF2のビューパラメータの概念とリダイレクトの根本的な欠陥があると思いますか?私は、リダイレクトで生き残れないビュースコープと同じ問題を抱えていました。このために、私は独自のスコープを作成しなければなりませんでした。 (私はフラッシュスコープを使用することができた)。
これはMojarra 2.1.2で再現できますが、これはセッション属性にアクセスして任意のメソッドを呼び出すことができるため、重大なセキュリティ上の欠陥です。 –