Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XStream的安全框架未初始化,XStream可能易受攻击_Java_Xstream - Fatal编程技术网

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);在禁用警告之前调用。请对此进行向下投票。这很危险!第一环断了