2013-02-22 2 views
10

내 예제에는 f : selectItems-attribute가있는 selectOneMenu가 있습니다. 선택-항목이처럼 내 빈에서 해결 :JSF SelectItems 및 이스케이프 (xss)

<h:selectOneMenu value="#{bean.value}"> 
    <f:selectItems value="#{bean.selectItems}" var="obj" itemValue="#{obj}" itemLabel="#{obj.name}"/> 
</h:selectOneMenu> 

메소드 getSelectItems()를 내 콩에는 다음과 같습니다 표시됩니다

public List<MyObject> getSelectItems() { 
     List<MyObject> list = new LinkedList<MyObject>(); 

     MyObject obj = new MyObject("Peter"); 
     list.add(obj); 

     return list; 
    } 

객체는 속성을 가진 간단한 개체입니다 " 이름".

이 시점까지는 특별한 사항이 없습니다. 하지만 지금은 내 방법을 변경 :

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; 
    } 

나던 MenuRenderer 클래스 내 페이지에서 탈출 얻을 자바 스크립트 나에게 경고 메시지를 보여줍니다.

SelectItem의 이스케이프 속성의 기본값이 "거짓"인 이유가 있습니까? 어떻게 문제를 해결할 수 있습니까? (저는 Mojarra 2.1.7을 사용합니다)

+0

답변 : [여기] (http://stackoverflow.com/questions/14238646/how-to-escape-fselectitem-itemlabel-attribute) –

+0

@VikasV : OP의 구체적인 문제는 다른 방향으로 진행됩니다. – BalusC

답변

12

기본값은 실제로 false이 아니어야합니다. 나는 issue 2747로보고했습니다.

그 사이에 어쨌든 itemLabelEscaped="true"을 추가하여 탈출하십시오. 대신 List<SelectItem>/SelectItem[]E[]/List<E>/Map<K, V>을 공급하고 때, 즉를 GenericObjectSelectItems를 사용하는 경우에만 필요하다고

<f:selectItems ... itemLabelEscaped="true" /> 

참고. 또한 사용자가 제어하는 ​​입력과 관련하여 이스케이프 처리는 절대적으로 필수적입니다 (드롭 다운 값의 경우 드물게 그렇습니다).

+0

이 문제는 JSF 2.2 ([JAVASERVERFACES_SPEC_PUBLIC-1167] (https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-1167)) 및 Mojarra 2.2.6 ([JAVASERVERFACES-3143] (https : // java. net/jira/browse/JAVASERVERFACES-3143)). –

관련 문제