当前位置: 首页 > 面试题库 >

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

麻宾白
2023-03-14
问题内容

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,您只需要一行。

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



 类似资料:
  • 想知道如何使用Xstream API修复Xml外部实体(XXE)漏洞。 就像我们能做的一样 使用DocumentBuilderFactory。更多详细信息-https://www.owasp.org/index.php/XML_External_Entity_(XXE)\u预防\u备忘单 我的代码是这样的-

  • XStream是一个Java对象和XML相互转换的工具,很好很强大。提供了所有的基础类型、数组、集合等类型直接转换的支持。因此XML常用于数据交换、对象序列化(这种序列化和Java对象的序列化技术有着本质的区别)。 Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将javaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件,使得XML序列化不

  • 17.8 XStream Xstream 是一个用于将对象与 XML 文档进行序列化与反序列化的简单类库。它不需要任何映射关系,并且会生成整齐的 XML 文档。 请参考XStream 的项目主页以获取更多信息。Spring 对此框架的集成代码都在 org.springframework.oxm.xstream 包下面。 XstreamMarshaller 类不需进行任何配置便可直接在 applic

  • 本文向大家介绍Python的Django框架安装全攻略,包括了Python的Django框架安装全攻略的使用技巧和注意事项,需要的朋友参考一下 Python 安装 Django本身是纯Python编写的,所以安装框架的第一步是确保你已经安装了Python。 Python版本 核心Django框架可以工作在2.3至2.6(包括2.3和2.6)之间的任何Python版本。 Django的可选GIS(地

  • 问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事