Java Hibernate@SafeHtml不允许url链接
我需要在文本字段中使用XSS过滤器,但我需要允许某些html标记用于文本格式(粗体、斜体等),并且我还需要允许url链接,如:
<p style='text-align: left;'><a href='google.com'>then with links!</a></p>
所以在我的实体类中,我添加了白名单:
@SafeHtml(whitelistType = WhiteListType.RELAXED,
additionalTagsWithAttributes = {
@SafeHtml.Tag(name = "a", attributes = { "href" })
})
private String body;
但它仍然给了我以下错误:
may have unsafe html content
# 1 楼答案
您有两个问题,一个是
style
属性在p
标记上不受支持,第二个问题是href
属性缺少所有WhiteListType
所需的协议。请参阅下面的列表,了解标签和属性为WhiteListType
支持的协议放松的
所以在你的情况下,文本
<p style='text-align: left;'><a href='google.com'>then with links!</a></p>
应该改成
<p style='text-align: left;'><a href='http://google.com'>then with links!</a></p>
不,没有简单的方法可以添加自定义协议:)java代码应该改为
从Hibernate Validator 6开始,您还可以提供协议的自定义列表。但遗憾的是,{{CD8}}也被标记为弃权,所以请考虑编写自己的验证器。p>