XStream的安全框架未初始化,XStream可能容易受到攻击

Security framework of XStream not initialized, XStream is probably vulnerable

使用XStream(1.4.10)时,我一直将此控制台错误显示为红色

我尝试了以下方法:

XStream.setupDefaultSecurity(xs);

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

没有一个摆脱它。

我不需要任何花哨的安全设置,我只想沉默那个警告。 也许还准备1.5.x的代码

在处理安全问题时,我不会掉以轻心。 首先,人们会理解问题的严重性,这里写得很好 。

然后了解人们如何推荐解决方案。 开始的好地方是xstream网站本身。 有一个例子可以作为xstream安全页面的起点。

这将是我的设置,基本上允许您的大部分代码。

 XStream xstream = new XStream(); // clear out existing permissions and set own ones xstream.addPermission(NoTypePermission.NONE); // allow some basics xstream.addPermission(NullPermission.NULL); xstream.addPermission(PrimitiveTypePermission.PRIMITIVES); xstream.allowTypeHierarchy(Collection.class); // allow any type from the same package xstream.allowTypesByWildcard(new String[] { "com.your.package.**" }); 

但是,在深入了解其源代码之后,这是我的看法:

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

基本上,一旦升级到1.5,你只需要一行。

请注意,您可能需要更多通配符以满足您的应用程序反序列化方案。 这不是一个适合所有人的答案,而是一个很好的起点恕我直言。

我有相同的“问题”并通过允许相关类型解决它:

 Class[] classes = new Class[] { ABC.class, XYZ.class }; XStream xStream = new XStream(); XStream.setupDefaultSecurity(xStream); xStream.allowTypes(classes); 

也许这对你的情况也有帮助。

祝你好运!