2016-07-11 2 views
1

У меня есть конец Java, на котором я использую Hibernate для более конкретной проверки компонента, а именно: @SafeHtml. Он отлично работает для 99% моих потребностей, однако у меня есть часть, которая позволяет пользователю вводить базовый HTML для создания своей собственной страницы, и мне нужно быть менее ограничительным здесь.SafeHtml Проверка бина, разрешить атрибуты HTML-элемента, отвергая, возможно, вредоносные теги (то есть <script> ...)

Моя проблема заключается в том, что я хочу ограничить определенные типы элементов HTML (т. Е. Теги и т. Д.), При этом разрешая атрибуты для HTML-элементов, которые я считаю подходящими (т. Е.). Насколько я мог видеть, @SafeHtml не допускает никаких атрибутов, если явно не указано, как в следующем:

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

    } 
) 

Будем надеяться, что вы можете увидеть проблему с этим, чтобы даже небольшое подмножество теги с включенными атрибутами были бы невероятно подробными и расточительными, не говоря уже о том, что было бы легко пропустить что-то со всеми тегами и атрибутами.

Итак ... мой вопрос: есть ли лучший способ сделать это? Похоже, что это не должно быть уникальным для ситуации: т. Е. Вы хотите проверить пользовательский ввод, который является HTML, но только хотите отклонить теги сценария ...

ответ

0

И ни один из других WhiteListType типов не подходит вам лучше? Если нет, и вы считаете, что конфигурация @SafeHtml громоздка, вы всегда можете вручную раскрутить свой собственный @MySafeHtml. Это пользовательское ограничение может под капотом также использовать JSoup или любой другой способ, который, по вашему мнению, подходит для вашего конкретного случая использования.

+0

«RELAXED» уже является самым либеральным, однако WhiteListType в этой точке почти не имеет значения, потому что вам все равно придется вручную устанавливать каждый атрибут даже для тегов, которые он позволяет. Раньше я использовал некоторые пользовательские валидаторы; Тем не менее, мой опыт создания моего собственного немного ограничен, и я надеялся на что-то большее, что было пробовано и верно для этого проекта. –

 Смежные вопросы

  • Нет связанных вопросов^_^