Java 对瓦丁区进行消毒
Vaadin框架有这个有用的RichTextArea组件。但是,用户可以将有害的javascript插入此字段,因此在保存前应对字段的值进行清理 瓦丁会怎么做?《瓦丁之书》只提到这个领域“应该被消毒”,但并没有给出一个实际如何做到这一点的暗示。一周前在论坛上提问没有得到任何回复Java 对瓦丁区进行消毒,java,javascript,security,vaadin,sanitization,Java,Javascript,Security,Vaadin,Sanitization,Vaadin框架有这个有用的RichTextArea组件。但是,用户可以将有害的javascript插入此字段,因此在保存前应对字段的值进行清理 瓦丁会怎么做?《瓦丁之书》只提到这个领域“应该被消毒”,但并没有给出一个实际如何做到这一点的暗示。一周前在论坛上提问没有得到任何回复 为此,我不想在项目中添加更多的库。一个人会如何继续在爪哇制造自己的RichTextArea消毒剂,使用或不使用Vaadin 最简单的方法是使用vaadin7附带的JSoup(vaadinserver取决于它)。例如: 看
为此,我不想在项目中添加更多的库。一个人会如何继续在爪哇制造自己的RichTextArea消毒剂,使用或不使用Vaadin 最简单的方法是使用vaadin7附带的JSoup(
vaadinserver
取决于它)。例如:
看
通过解析输入HTML并通过允许的标记和属性的白名单进行过滤,从不受信任的输入HTML中获取安全的HTML
参数:
bodyHtml
-输入不受信任的HTML(正文片段)
白名单
-允许的HTML元素白名单
返回:
安全HTML(正文片段)
及
白名单定义了允许通过cleaner的HTML(元素和属性)。其他一切都被删除了
从一个默认值开始:
none()
simpleText()
basic()
basicWithImages()
relaxed()
这取决于输入值的输出位置。如果您通过RichText或Label组件“显示”它们,则无需执行任何操作,因为它们在显示时将正确转义。它将显示在视图中,并作为实体Bean的属性保存在数据库中(这是一条描述顺序的消息)。我想Vaadin中适合富文本输入的查看组件只是一个只读模式的RichTextArea。在这种情况下,您不需要做任何事情。因为vaadin RichTextArea应该正确地避开JS内容。这不会阻止最终用户以..的形式输入javascript。。。。。但在显示时,不应执行它,而应显示为。。。。。但是要注意,如果你在将来的某个地方用另一个UI显示它,它可能会崩溃……不,你不是完全保存的。如果RTE收到恶意代码,则该代码将存在于DOM中(但处理方式不会直接执行),因此这可以桥接到存储的XSS中。另外,写你自己的,不使用图书馆肯定会出错。谢谢!是的,我现在正在成功地使用它。
Jsoup.clean(richTextArea.getValue(), Whitelist.simpleText())
public static String clean(String bodyHtml, Whitelist whitelist)
public class Whitelist extends Object