在处理安全问题时,我不会掉以轻心。首先,人们会理解问题的严重性,在这里写一篇好文章或另一篇。
然后了解人们如何推荐解决方案。从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后,您只需要一行。
请注意,您可能需要更多通配符来适应您的应用程序反序列化方案。恕我直言,这不是一个放之四海而皆准的答案,而是一个很好的起点。