xstream security framework of xstream not initialized xstream is probably vulnerable 问题解决办法

红太狼 2020-11-14 23:36 662阅读 0赞

xstream security framework of xstream not initialized xstream is probably vulnerable

最近在使用 XStream 1.4.10 版本的时候遇到了一个安全问题:“xstream security framework of xstream not initialized xstream is probably vulnerable”。大致的意思是说,XStream 的安全框架没被初始化,这是一段红色的提示,实际使用过程中也没有大的问题。但是作为开发者来说,一个红色的提示太耀眼了,可能还是强迫症在作怪,所以我一直想把这个红色的提示给去掉,就查了谷歌。本文给大家分享一下解决过程。

首先,根据 stackoverflow 的 Security framework of XStream not initialized, XStream is probably vulnerable 这个问题的提示,我做出了下面的调整:

  1. XStream xstream = new XStream();
  2. XStream.setupDefaultSecurity(xstream);

但是在使用过程中它又报出了“com.thoughtworks.xstream.security.ForbiddenClassException”问题。所以这种解决办法不行。于是我根据上面的提示,又添加了下面的代码:

  1. xs.addPermission(AnyTypePermission.ANY);
  2. xs.addPermission(NoTypePermission.NONE);

运行后,上面的问题依然存在。所以我继续做调整:

  1. Class<?>[] classes = new Class[] { TestList.class, Item.class, ... };
  2. XStream xstream = new XStream();
  3. XStream.setupDefaultSecurity(xstream);
  4. xstream.allowTypes(classes);

这个配置同样的报“com.thoughtworks.xstream.security.ForbiddenClassException”。于是,有人建议我把版本升级到 1.5.x,最终解决了。

但是做为一个开发者,我不想通过升级来解决。我想一定又其他的解决办法。发现添加下面的代码,最终得意解决:

  1. XStream.setupDefaultSecurity(this); // to be removed after 1.5
  2. xstream.allowTypesByWildcard(new String[] {
  3. "com.xttblog.package.**"
  4. });

大概在 3 年之前我用的 Xstream 低版本的还没有这个问题,可能只是 1.4.x 版本新加的安全验证功能吧。

发表评论

表情:
评论列表 (有 0 条评论,662人围观)

还没有评论,来说两句吧...

相关阅读

    相关 XStream支持CDATA标签

    需求: 在生成XML文档中需要支持CDATA标签,而且不是所字段都需要增加,只需要某些特定的字段增加CDATA的标签。  研究: 在网上找了一些相关资料,基本采用的方

    相关 XStream 简介

    XStream 一、概述 XStream是Java类库,用来将对象序列化成XML (JSON)或反序列化为对象。 也就是说,使用XStream,我们可以把Java