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

问题描述

在处理安全问题时,我不会掉以轻心。首先,一个人要了解问题的严重性,这里写得很好,或者另一本书

然后找出人们如何推荐该解决方案。最好的起点是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,您只需要一行。

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

解决方法

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的代码

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...