我有一个基于Java的后端,在该后端中,我正在使用Hibernate进行一些更特定的bean验证,即:@SafeHtml。它可以很好地满足我99%的需求,但是我有一个允许用户输入基本HTML来创建自己的页面的部分,在这里我需要减少限制。

我的问题是我想限制某些类型的HTML元素(例如''标签等...),同时允许我认为合适的HTML元素的属性(即)。据我所知,@SafeHtml不允许任何属性,除非明确定义如下:

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

    }
)


希望您能看到问题所在,即使是一小部分启用了属性的标签子,也将变得非常冗长和浪费,更不用说容易丢失所有标签和属性了。

所以...我的问题是:是否有更好的方法来做到这一点?似乎不应该是这种情况的独特之处:即,您想验证HTML的用户输入,而只想拒绝脚本标签...

最佳答案

还有没有其他WhiteListType类型的套件更好?如果不是这样,并且您认为@SafeHtml的配置很繁琐,则可以随时手动滚动自己的@MySafeHtml。这个自定义约束还可以在内部使用JSoup或您认为适合您的特定用例的任何其他方式。

09-11 09:43