Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF选择项和转义(xss)_Jsf_Xss_Mojarra - Fatal编程技术网

JSF选择项和转义(xss)

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

在我的示例中,有一个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 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()中已得到修复。