Java XStream的安全框架未初始化,XStream可能易受攻击
Java XStream的安全框架未初始化,XStream可能易受攻击,java,xstream,Java,Xstream,XStream的安全框架未初始化,XStream可能易受攻击 在使用XStream(1.4.10)时,我一直收到这个控制台错误的红色提示 我尝试了以下方法: XStream.setupDefaultSecurity(xs) 及 xs.addPermission(AnyTypePermission.ANY) xs.addPermission(notypeppermission.NONE) 没有一个能摆脱它 我不需要任何花哨的安全设置,我只想让警告静音。也可以为1.5.x编写代码我遇到了同样的“问题
XStream的安全框架未初始化,XStream可能易受攻击
在使用XStream(1.4.10)时,我一直收到这个控制台错误的红色提示
我尝试了以下方法:
XStream.setupDefaultSecurity(xs)代码>
及
xs.addPermission(AnyTypePermission.ANY)代码>
xs.addPermission(notypeppermission.NONE)代码>
没有一个能摆脱它
我不需要任何花哨的安全设置,我只想让警告静音。也可以为1.5.x编写代码我遇到了同样的“问题”,并通过允许相关类型来解决它:
Class<?>[] classes = new Class[] { ABC.class, XYZ.class };
XStream xStream = new XStream();
XStream.setupDefaultSecurity(xStream);
xStream.allowTypes(classes);
Class[]classes=新类[]{ABC.Class,XYZ.Class};
XStream XStream=新的XStream();
setupDefaultSecurity(XStream);
xStream.allowTypes(类);
也许这对你的情况也有帮助
祝你好运 在处理安全问题时,我不会掉以轻心。首先,人们会理解问题的严重性,这里是一个or
然后了解人们如何推荐解决方案。最好从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版后只需要一行代码
请注意,您可能需要更多通配符来适应您的应用程序反序列化场景。这不是一个一刀切的答案,而是一个很好的起点。IMHO。它还可以通过为允许的类指定一个全包模式来工作:
xstream.allowTypesByRegExp(new String[] { ".*" });
我还可以指定一个巨大的超类吗?@GGrec NO…我尝试传递超类,但它给了我子类的错误。这基本上是禁用XStream试图让您配置的安全功能。除非你不关心你的应用程序是否安全,否则不要这样做!这需要小心使用!另外,这需要xstream.addPermission(notypeppermission.NONE);在禁用警告之前调用。请对此进行向下投票。这很危险!第一环断了