보기 매개 변수를 정의하는 JSF2 XHTML 페이지가있어 북마크 가능한 URL을 가질 수 있습니다. XHTML의 페이지 매개 변수를 포함JSF2 리다이렉트 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 콩 수익률하지만 매개 변수를 포함 :
멋진 URL을 사용자에게 제공?faces-redirect=true&includeViewParams=true
. 사용자가 검색 필드에 "IBM"을 입력하면 URL은
으로 리디렉션됩니다. 완벽하게 작동합니다. 그러나 이제 사용자는 searchName 텍스트 필드에 EL 표현식을 입력 할 수 있으며 EL 표현식이 평가됩니다. 예 : 사용자가 입력 할 때 "#은 {2 + 2}"텍스트 필드에서 URL은
?searchName=4
로 리디렉션되고 이것은 내가 보안으로 인해 EL 발현를 입력 할 수 있도록 허용, 우리가 일을하지 않아야 생각입니다 원인. Glassfish 3.1.1을 사용하고 있습니다.
이 자동 EL 해결을 방지하는 방법에 대한 아이디어가 있으십니까? JSF2의 뷰 매개 변수 개념과 리디렉션과 관련된 근본적인 결함이 있다고 생각합니다. 나는 리디렉션에서 살아남지 못하는 뷰 범위와 동일한 문제를 겪었고,이를 위해 자체 범위를 만들어야했습니다. (나는 플래시 스코프를 사용할 수 있었다).
Mojarra 2.1.2에서 이것을 재현 할 수 있습니다. 세션 특성에 액세스하고 임의의 메서드를 호출 할 수 있기 때문에 심각한 보안 결함입니다. –