istnieje selectOneMenu w moim przykładzie z atrybutem f: selectItems. SELECT-przedmioty są rozwiązywane od mojego fasoli tak:JSF SelectItems i escaping (xss)
<h:selectOneMenu value="#{bean.value}">
<f:selectItems value="#{bean.selectItems}" var="obj" itemValue="#{obj}" itemLabel="#{obj.name}"/>
</h:selectOneMenu>
The getSelectItems() metoda w moim fasoli wygląda tak:
public List<MyObject> getSelectItems() {
List<MyObject> list = new LinkedList<MyObject>();
MyObject obj = new MyObject("Peter");
list.add(obj);
return list;
}
te, które są wyświetlane obiekty są proste obiekty z atrybutem " Nazwa".
Nic specjalnego do tego momentu. Ale teraz mogę zmienić metodę, że:
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;
}
javascript doesnt się uciec przez MenuRenderer Klasy i mojej stronie pokazuje mi Alert komunikat.
Czy istnieje przyczyna, dla której domyślną wartością atrybutu escape obiektu SelectItem jest "false"? Jak mogę rozwiązać ten problem? (Używam Mojarra 2.1.7)
Możesz znaleźć odpowiedź [tutaj] (http://stackoverflow.com/questions/14238646/how-to-escape-fselectitem-itemlabel-attribute) –
@VikasV: Konkretny problem PO dotyczy odwrotności. – BalusC