2016-07-11 5 views
1

@SafeHtml과 같은 특정 bean 유효성 검사를 위해 Hibernate를 사용하는 자바 기반 백엔드가 있습니다. 그것은 내 요구의 99 %에 대해 훌륭하게 작동하지만, 사용자가 기본 HTML을 입력하여 자신의 페이지를 만들 수있게 해주는 부분이 있습니다. 여기서는 덜 제한적이어야합니다.SafeHtml Bean 유효성 검사, HTML 요소 속성 허용, 악의적 인 태그 거부 (예 : <script> ...)

내 문제는 적절하다고 생각되는 HTML 요소의 속성을 허용하면서 특정 유형의 HTML 요소 (예 : '태그 등 ...)를 제한하고 싶습니다. 희망

@SafeHtml ( 
    whitelistType = WhiteListType.RELAXED, 
    additionalTagsWithAttributes = { 
     @Tag(name = "div", attributes = {"class", "style"}, 
     @Tag(name = "anotherTag", attributes = {"id", "anotherAttribute"} 

    } 
) 

당신은 심지어 작은 하위 집합을 허용하는이 함께 문제를 볼 수 : 명시 적으로 다음과 같이 정의되지 않는 한 지금까지 내가 볼 수 있었던대로, @SafeHtml 어떤 ​​속성을 허용하지 않습니다 태그를 사용하면 태그와 속성이 모두있는 항목을 쉽게 놓칠 수있을뿐만 아니라 태그의 속성을 활성화하면 매우 상세하고 낭비가됩니다.

그래서 ... 내 질문은 : 이것을 할 수있는 더 좋은 방법이 있습니까? HTML의 사용자 입력을 확인하고 싶지만 스크립트 태그를 거부하고 싶을뿐입니다 ...

답변

0

다른 WhiteListType 유형 중 어떤 것도 좋지 않습니까? 그렇지 않다면 @SafeHtml의 설정이 번거롭다 고 생각할 수 있습니다. @MySafeHtml을 직접 손으로 처리 할 수 ​​있습니다. 이 사용자 지정 제약 조건은 JSoup 또는 특정 사용 사례에 적합한 다른 방식으로도 사용할 수 있습니다.

+0

"RELAXED"는 이미 가장 진보적이지만, 허용되는 태그에 대해서도 모든 속성을 수동으로 설정해야하기 때문에 그 시점의 WhiteListType은 거의 부적합합니다. 이전에 일부 맞춤 검사기를 사용했습니다. 그러나, 내 자신을 만드는 내 경험은 다소 제한되어 있으며, 나는이 프로젝트에 대해 더 많은 것을 시도하고 진실이 되길 바랬습니다. –