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

JAVA herman 2053浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

最近在使用 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 问题解决办法》。

参考资料

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » xstream security framework of xstream not initialized xstream is probably vulnerable 问题解决办法