消毒Vaadin RichTextArea

时间:2014-12-08 06:28:25

标签: java javascript security vaadin sanitization

Vaadin框架具有这个有用的RichTextArea组件。但是,用户可以在此字段中插入有害的javascript,以便在保存之前清理字段的值。

Vaadin这样做的方式是什么? Vaadin的书只提到该领域应该被消毒"但是并没有暗示如何实际做到这一点。一周前在论坛上提问并没有得到任何回复。

我不想为此目的将更多的库添加到项目中。如果使用或不使用Vaadin,如何在Java中制作自己的RichTextArea消毒剂?

1 个答案:

答案 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(正文片段)

Whitelist

public class Whitelist extends Object
     

白名单定义允许通过清理器的HTML(元素和属性)。其他一切都被删除了。

     

从其中一个默认值开始:

     
      
  • none()
  •   
  • simpleText()
  •   
  • basic()
  •   
  • basicWithImages()
  •   
  • relaxed()
  •