Ho una pagina XHTML JSF2 che definisce i parametri di visualizzazione, questo consente di avere URL bookmarkable. La pagina di XHTML comprende i parametri:Il reindirizzamento JSF2 con includeViewParams consente agli utenti di immettere espressioni EL risolte in campi di testo
<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>
Nella stessa pagina, ho un campo di testo e un pulsante che permette all'utente di cambiare la searchName:
<h:form id="some-id">
<h:inputText value="#{nbsearchpage.searchName}" />
<h:commandButton value="search" action="#{nbsearchpage.search}" />
</h:form>
e, infine, la ricerca metodo di azione() nei nbsearchpage fagioli torna alla stessa pagina, ma inclusi i parametri:
?faces-redirect=true&includeViewParams=true
che fornisce all'utente con un bel URL. Quando l'utente inserisce "IBM" nel campo di ricerca, l'URL viene reindirizzato a
?searchName=IBM
Funziona perfettamente. Ma ora l'utente può inserire un'espressione EL nel campo di testo SearchName e viene valutata l'espressione EL. Per esempio. quando l'utente immette "# {2 + 2}" nel campo di testo, l'URL viene reindirizzato a
?searchName=4
e questo è ciò che penso che non dovremmo fare, che permette all'utente di inserire l'espressione EL causa di sicurezza motivi. Sto usando Glassfish 3.1.1.
Qualche idea su come evitare questa risoluzione EL automatica? Penso che ci sia un difetto fondamentale con il concetto di parametro di visualizzazione in JSF2 e con il reindirizzamento? Ho avuto lo stesso problema con l'ambito di visualizzazione che non sopravvive ai reindirizzamenti, e per questo ho dovuto creare un proprio ambito. (Avrei potuto usare l'ambito del flash).
Posso riprodurlo con Mojarra 2.1.2, questo è un grave difetto di sicurezza poiché consente anche di accedere agli attributi di sessione e di chiamare metodi arbitrari. –