RedisTemplate在Fortify的动态代码评估中导致不安全的反序列化

时间:2019-07-26 17:53:58

标签: java deserialization fortify spring-data-redis

在制作spring redis数据模板时,我使用:

-I

然后,我还将反序列化器设置为一种自定义解串器,以防不安全的反序列化将白名单列出某些类。

以某种方式强化的要点仍然突出:

RedisTemplate<String, xxxDTO> template = new RedisTemplate<>();

在动态代码评估期间(在王国输入验证和表示中)是不安全的反序列化。

如何在不被标记的情况下制作RedisTemplate?

1 个答案:

答案 0 :(得分:0)

我通过使用静态代码分析器进行试验和实验找到了自己的答案。 显然,您应该重新编写RedisTemplate类的实现,并自己执行jdkserializationredisserializer的实现。

特别是,您应该重写并创建一个反序列化转换器,该转换器将在构造函数方法的jdkserializationredisserializer类中调用,因为默认情况下它不使用任何验证(它使用DeserializingConverter)。然后,在反序列化转换器中,实现白名单方法,该方法指定了期望的类。确保对它们进行单元测试,因为它们可能需要反序列化相关类。