JSF选择项和转义(xss)
在我的示例中,有一个selectOneMenu,带有f:selectItems属性。从my bean解析select项,如下所示:JSF选择项和转义(xss),jsf,xss,mojarra,Jsf,Xss,Mojarra,在我的示例中,有一个selectOneMenu,带有f:selectItems属性。从my bean解析select项,如下所示: <h:selectOneMenu value="#{bean.value}"> <f:selectItems value="#{bean.selectItems}" var="obj" itemValue="#{obj}" itemLabel="#{obj.name}"/> </h:selectOneMenu> my
<h:selectOneMenu value="#{bean.value}">
<f:selectItems value="#{bean.selectItems}" var="obj" itemValue="#{obj}" itemLabel="#{obj.name}"/>
</h:selectOneMenu>
my bean中的getSelectItems()方法如下所示:
public List<MyObject> getSelectItems() {
List<MyObject> list = new LinkedList<MyObject>();
MyObject obj = new MyObject("Peter");
list.add(obj);
return list;
}
public List getSelectItems(){
列表=新建LinkedList();
MyObject obj=新的MyObject(“彼得”);
列表。添加(obj);
退货清单;
}
显示的对象是具有属性“name”的简单对象
到目前为止没有什么特别的。但现在我将我的方法改为:
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;
}
public List getSelectItems(){
列表=新建LinkedList();
MyObject obj=新的MyObject(“警报('xss是坏的”);”;
列表。添加(obj);
退货清单;
}
MenuRender类不会转义javascript,我的页面会向我显示警告消息
SelectItem的转义属性的默认值为“false”有什么原因吗?
我怎样才能解决这个问题?(我使用Mojarra 2.1.7)默认值确实不应该是
false
。我把它报告为
同时,添加itemLabelEscaped=“true”
以转义它
<f:selectItems ... itemLabelEscaped="true" />
请注意,只有在使用
GenericObjectSelectItems
时,即在提供e[]
/列表
/映射
而不是列表
/选择项[]
时,才需要执行此操作。还请注意,转义仅在涉及用户控制的输入时是绝对必需的(幸运的是,下拉值中很少出现这种情况)。您可以在@VikasV:OP的具体问题中找到答案。这在JSF 2.2()和Mojarra 2.2.6()中已得到修复。