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

GGr*_*rec 25 java 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的代码

coo*_*ort 25

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

然后了解人们如何推荐解决方案.开始的好地方是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.**"
});
Run Code Online (Sandbox Code Playgroud)

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

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

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

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


小智 9

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

Class<?>[] classes = new Class[] { ABC.class, XYZ.class };
XStream xStream = new XStream();
XStream.setupDefaultSecurity(xStream);
xStream.allowTypes(classes);
Run Code Online (Sandbox Code Playgroud)

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

祝好运!