【问题标题】:RedisTemplate leads to unsafe deserialization in Fortify's dynamic code evaluationRedisTemplate 导致 Fortify 动态代码评估中的不安全反序列化
【发布时间】:2019-07-26 17:53:58
【问题描述】:

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

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

然后我还将反序列化器设置为一个自定义的反序列化器,在不安全的反序列化的情况下将某些类列入白名单。

Fortify 仍然以某种方式突出显示:

new RedisTemplate<>();

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

如何制作不被标记的 RedisTemplate?

【问题讨论】:

    标签: java deserialization fortify spring-data-redis


    【解决方案1】:

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

    具体来说,您应该重写并制作一个反序列化转换器,该转换器将在构造方法中的 jdkserializationredisserializer 类中调用,因为它默认不使用任何验证(它使用 DeserializingConverter)。然后在您的反序列化转换器中,您实现指定预期哪些类的白名单方法。确保您也对它们进行单元测试,因为它们可能具有需要反序列化的依赖类。

    【讨论】:

    • 您好,您能否分享一段关于您如何设法重写 RedisTemplate 实现的代码?
    猜你喜欢
    • 1970-01-01
    • 2021-02-21
    • 2019-03-27
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    相关资源
    最近更新 更多