最近在使用 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 这个问题的提示,我做出了下面的调整:
XStream.setupDefaultSecurity(xs);
但是在使用过程中它又报出了“com.thoughtworks.xstream.security.ForbiddenClassException”问题。所以这种解决办法不行。于是我根据上面的提示,又添加了下面的代码:
xs.addPermission(AnyTypePermission.ANY); xs.addPermission(NoTypePermission.NONE);
运行后,上面的问题依然存在。所以我继续做调整:
Class<?>[] classes = new Class[] { TestList.class, Item.class, ... }; XStream xstream = new XStream(); XStream.setupDefaultSecurity(xstream); xstream.allowTypes(classes);
这个配置同样的报“com.thoughtworks.xstream.security.ForbiddenClassException”。于是,有人建议我把版本升级到 1.5.x,最终解决了。
但是做为一个开发者,我不想通过升级来解决。我想一定又其他的解决办法。发现添加下面的代码,最终得意解决:
XStream.setupDefaultSecurity(this); // to be removed after 1.5 xstream.allowTypesByWildcard(new String[] { "com.xttblog.package.**" });
大概在 3 年之前我用的 Xstream 低版本的还没有这个问题,可能只是 1.4.x 版本新加的安全验证功能吧。关于“com.thoughtworks.xstream.security.ForbiddenClassException”请查看我的另一篇文章《com.thoughtworks.xstream.security.ForbiddenClassException 问题解决办法》。
参考资料
- Security framework of XStream not initialized, XStream is probably vulnerable
: » xstream security framework of xstream not initialized xstream is probably vulnerable 问题解决办法
原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/251837.html