java - RedisTemplate 导致 Fortify 动态代码评估中的不安全反序列化
问题描述
在制作 spring redis 数据模板时,我使用:
RedisTemplate<String, xxxDTO> template = new RedisTemplate<>();
然后我还将反序列化器设置为一个自定义的反序列化器,在不安全的反序列化的情况下将某些类列入白名单。
Fortify 仍然以某种方式突出显示:
new RedisTemplate<>();
作为动态代码评估期间的不安全反序列化,在王国输入验证和表示中。
如何在不被标记的情况下制作 RedisTemplate?
解决方案
我通过静态代码分析器的试验和实验找到了自己的答案。显然您应该重新编写 RedisTemplate 类的实现并自己实现 jdkserializationredisserializer。
具体来说,您应该重写并制作一个反序列化转换器,该转换器将在构造函数方法中的 jdkserializationredisserializer 类中调用,因为它默认不使用任何验证(它使用 DeserializingConverter)。然后在您的反序列化转换器中,您实现指定预期哪些类的白名单方法。确保您也对它们进行单元测试,因为它们可能具有需要反序列化的依赖类。
推荐阅读
- javascript - 角度错误日志发送到 elasticsearch
- influxdb - influxdb - 当使用 mean() 或 median() 请求时,一些值变为空
- html - 让 CSS 网格行填充可用空间
- javascript - CORS 阻止的来源 - 来源和允许的来源相同
- java - MD5 哈希 Java 测验
- qt - QML Gauge如何制作初始值?
- mongodb - 将数据库从 robo3t 迁移到 MongoDB Atlas
- android - 无论用户选择取消还是安装,如何从应用更新弹出窗口中获取回调
- javascript - 当我单击任何美国州地图时,fusionchart 中另一部分的图表过滤器
- regex - 正则表达式从请求 id 中提取文本