У меня есть конец 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, но только хотите отклонить теги сценария ...
«RELAXED» уже является самым либеральным, однако WhiteListType в этой точке почти не имеет значения, потому что вам все равно придется вручную устанавливать каждый атрибут даже для тегов, которые он позволяет. Раньше я использовал некоторые пользовательские валидаторы; Тем не менее, мой опыт создания моего собственного немного ограничен, и я надеялся на что-то большее, что было пробовано и верно для этого проекта. –