nel mio esempio c'è un selectOneMenu con un attributo f: selectItems. Le Select-oggetti sono risolti dal mio fagiolo in questo modo:JSF SelectItems e escaping (xss)
<h:selectOneMenu value="#{bean.value}">
<f:selectItems value="#{bean.selectItems}" var="obj" itemValue="#{obj}" itemLabel="#{obj.name}"/>
</h:selectOneMenu>
I getSelectItems metodo() nella mia fagioli sembra che:
public List<MyObject> getSelectItems() {
List<MyObject> list = new LinkedList<MyObject>();
MyObject obj = new MyObject("Peter");
list.add(obj);
return list;
}
Gli oggetti che vengono visualizzati sono oggetti semplici con un attributo " nome".
Niente di speciale fino a questo punto. Ma ora ho cambiare il mio metodo per che:
public List<MyObject> getSelectItems() {
List<MyObject> list = new LinkedList<MyObject>();
MyObject obj = new MyObject("<script>alert('xss is bad');</script>");
list.add(obj);
return list;
}
Il javascript Indifferente ottenere sfuggito da MenuRenderer-Class e la mia pagina mi mostra l'avviso-messaggio.
C'è qualche motivo per cui il valore predefinito dell'attributo escape di SelectItem è "false"? Come posso risolvere questo problema? (Uso Mojarra 2.1.7)
È possibile trovare la risposta [qui] (http://stackoverflow.com/questions/14238646/how-to-escape-fselectitem-itemlabel-attribute) –
@VikasV: il problema concreto dell'OP riguarda il contrario. – BalusC