2014-12-08 3 views
2

Vaadin 프레임 워크에는이 유용한 RichTextArea 구성 요소가 있습니다. 그러나 사용자가 유해한 자바 스크립트를이 필드에 삽입하여 저장하기 전에 필드의 값을 삭제해야합니다.Vaadin RichTextArea 살균하기

이 작업을 수행하는 방법은 무엇입니까? Vaadin의 책은 단지 그 필드가 "위생적이어야한다"라고 언급하지만 실제로 그것을하는 법을 암시하지는 않는다. 일주일 전 포럼에 질문을해도 응답이 없었습니다.

이 목적으로 프로젝트에 라이브러리를 더 이상 추가하고 싶지 않습니다. Vaadin의 유무에 관계없이 자바로 자신의 RichTextArea 소독제를 만드는 방법은 무엇입니까?

+0

입력 한 값을 출력 할 위치에 따라 다릅니다. RichText 또는 Label 구성 요소를 통해 "표시"하는 경우 아무 것도하지 않아도됩니다. 표시 할 때 올바르게 이스케이프 처리하므로 아무 것도하지 않아도됩니다. –

+0

뷰에 표시되고 데이터베이스에 Entity Bean의 속성으로 저장됩니다 (주문을 설명하는 메시지입니다). 리치 텍스트 입력을위한 Vaadin의 적합한보기 컴포넌트는 readOnly 모드의 RichTextArea 일뿐입니다. –

+0

그런 경우에는 아무 것도 할 필요가 없습니다. RichTextArea가 JS 요소를 올바르게 벗어 났으므로.이것은 최종 사용자가 양식의 javascript를 입력하는 것을 막지는 못하지만 디스플레이상에서 실행해서는 안되며 으로 표시됩니다. 그러나 다른 UI를 사용하여 미래에 어딘가에 표시하면 마이그레이션이 중단된다는 것을 알아 두십시오. –

답변

4

가장 쉬운 방법은 Vaadin 7 (vaadin-server이 달려 있음)과 함께 제공되는 JSoup를 사용하는 것입니다. 예컨대 :

Jsoup.clean(richTextArea.getValue(), Whitelist.simpleText()) 

Jsoup.clean

public static String clean(String bodyHtml, Whitelist whitelist) 

입력 HTML 구문 분석 및 허용 된 태그의 화이트리스트를 통해 필터링 및 속성에 의해, 신뢰할 수없는 입력 HTML에서 안전 HTML 가져 오기를 참조하십시오.

매개 변수 :

bodyHtml - 입력 신뢰할 수없는 HTML (신체 조각)

whitelist - 허용 HTML 요소

반환의 화이트리스트 :

안전 HTML (신체 조각)

Whitelist

public class Whitelist extends Object 

화이트리스트는 HTML (요소 및 속성)이 청소기를 할 수 있도록 정의합니다. 나머지는 모두 제거됩니다. 기본값 중 하나

시작 :

  • none()
  • simpleText()
  • basic()
  • basicWithImages()
  • relaxed()
+0

감사! 네, 지금 이걸 성공적으로 사용하고 있습니다. –