Vaadin框架具有这个有用的RichTextArea组件。但是,用户可以在此字段中插入有害的javascript,以便在保存之前清理字段的值。
Vaadin这样做的方式是什么? Vaadin的书只提到该领域应该被消毒"但是并没有暗示如何实际做到这一点。一周前在论坛上提问并没有得到任何回复。
我不想为此目的将更多的库添加到项目中。如果使用或不使用Vaadin,如何在Java中制作自己的RichTextArea消毒剂?
答案 0 :(得分:5)
最简单的方法是使用附带Vaadin 7的JSoup(vaadin-server
依赖它)。 E.g:
Jsoup.clean(richTextArea.getValue(), Whitelist.simpleText())
请参阅Jsoup.clean
public static String clean(String bodyHtml, Whitelist whitelist)
从不受信任的输入HTML获取安全的HTML,通过解析输入HTML并通过允许的标记和属性的白名单对其进行过滤。
参数:
bodyHtml
- 输入不受信任的HTML(正文片段)
whitelist
- 允许的HTML元素的白名单返回:
安全的HTML(正文片段)
public class Whitelist extends Object
白名单定义允许通过清理器的HTML(元素和属性)。其他一切都被删除了。
从其中一个默认值开始:
none()
simpleText()
basic()
basicWithImages()
relaxed()