XStream的安全框架未初始化,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的代码
在处理安全问题时,我不会掉以轻心。 首先,人们会理解问题的严重性,这里写得很好 。
然后了解人们如何推荐解决方案。 开始的好地方是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,你只需要一行。
请注意,您可能需要更多通配符以满足您的应用程序反序列化方案。 这不是一个适合所有人的答案,而是一个很好的起点恕我直言。
我有相同的“问题”并通过允许相关类型解决它:
Class>[] classes = new Class[] { ABC.class, XYZ.class }; XStream xStream = new XStream(); XStream.setupDefaultSecurity(xStream); xStream.allowTypes(classes);
也许这对你的情况也有帮助。
祝你好运!