Перенаправление JSF2 с помощью includeViewParams позволяет пользователям вводить выражение EL, которое разрешается в текстовых полях

У меня есть страница XHTML JSF2, которая определяет параметры просмотра, это позволяет иметь URL-адреса для закладок. Страница XHTML включает параметры:

<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:

<h:form id="some-id">
  <h:inputText value="#{nbsearchpage.searchName}" />
  <h:commandButton value="search" action="#{nbsearchpage.search}" />
</h:form>

и, наконец, метод действия search () в bean-компоненте nbsearchpage возвращается к та же страница, но с параметрами:

?faces-redirect=true&amp;includeViewParams=true

, который предоставляет пользователю красивый URL. Когда пользователь вводит "IBM" в поле поиска, URL-адрес перенаправляется на

?searchName=IBM 

. Он работает отлично. Но теперь пользователь может введите выражение EL в текстовое поле searchName, и выражение EL будет вычислено. Например,когда пользователь вводит "# {2 + 2}" в текстовое поле, URL-адрес перенаправляется на

?searchName=4

, и это то, что, я думаю, нам не следует делать, позволяя пользователю вводить выражение EL по соображениям безопасности. Я использую Glassfish 3.1.1.

Есть идеи, как предотвратить это автоматическое разрешение EL? Я думаю, что есть фундаментальный недостаток концепции параметров представления в JSF2 и перенаправления? У меня была такая же проблема с областью представления, которая не переживает перенаправления, и для этого мне пришлось создать собственную область. (Я мог бы использовать вспышку).

13
задан BalusC 17 November 2011 в 12:30
поделиться