写点什么

从 Java 9 反向移植对象反序列化过滤器

  • 2017-03-30
  • 本文字数:956 字

    阅读完需:约 3 分钟

JEP 290 让开发人员可以在反序列化对象时对传入数据进行过滤。该提案最初是针对 Java 9 提出的,但现在已经反向移植到Java 6、7、8 。该特性提供了一种机制,可以在处理对象输入流时过滤传入数据,并且可以帮助预防反序列化漏洞。前不久,这种漏洞曾影响了Apache Commons 及其他库。

反序列化不可信任数据是开放Web 应用安全项目(OWASP)和 CERT Oracle Coding Standard for Java (尤其是规则 SER12-J SER13-J )等所列出的一个众所周知的风险。软件开发人员应该总是检查通过ObjectInputStream传入的数据是否有效,不过,借助 JDK 中现有的工具,这有时候并不容易实现。JEP 290 改变了这种情况,它提供了一种方法过滤传入数据,而且不需要扩展ObjectInputStream。这是通过多种机制实现的,取决于相关开发人员的需要。

一般来说,开发人员可以通过编辑系统属性jdk.serialFilter或者conf/security/java.properties中的安全属性jdk.serialFilter配置默认的 ObjectInputFilter 。这些属性可以接受一种或多种模式,用于查找类(使用类似 Ant 文件模式的语法),或者设置对反序列化对象属性的限制:

复制代码
// 拒绝反序列化任何属于 untrustedmodule 的类,
// 以及任何元素数超过 500 的数组
jdk.serialFilter=!untrustedmodule/.**;maxarray=500
// 包 com.myorg.trusted 的白名单类,
// 但不一定是来自子包
jdk.serialFilter=com.myorg.trusted.*

如果需要更大的灵活性,那么开发人员可以指定自己的动作和检查,实现自己的 ObjectInputFilter ,然后使用 setObjectInputFilter 应用到已有的ObjectInputStreamObjectInputFilter可以使用 ObjectInputFilter.FilterInfo 提供的信息确定当前正在反序列化的对象是可以接受还是需要拒绝,或者该过滤器并没有提供足够的决策信息;在后一种情况下,自定义的过滤器可以将状态置为“不确定”,并委托另一个用户定义的过滤器或者默认的系统过滤器进行决策。

最后,如果开发人员希望在所有的反序列化过程中都使用自己的机制,就可以使用 ObjectInputFilter.Config.setSerialFilter 将一个用户定义的过滤器指定为系统默认的过滤器。

如本文开头所言,开发人员不需要等到 Java 9 才开始应用序列化过滤器;Java 8 update 121、Java 7 update 131、Java 6 update 141 均提供了 JEP 290。

查看英文原文 Object Deserialisation Filters Backported from Java 9

2017-03-30 19:002531
用户头像

发布了 1008 篇内容, 共 403.1 次阅读, 收获喜欢 345 次。

关注

评论

发布
暂无评论
发现更多内容

美健日纪小程序开发定制

ALVIS

绿色篮子APP怎么开发??

ALVIS

女巫面具APP开发是什么??

ALVIS

安卓主板RK3288 RK3128 RK3399有哪些特点?

双赞工控

安卓主板 rk3288主板 rk3399主板 rk3128主板

驾校软件开发

(王经理)专业app小程序开发

红色壹佰拼团小程序开发

(王经理)专业app小程序开发

劳务派遣公司管理小程序开发

(王经理)专业app小程序开发

fil挖矿步骤教程是什么?fil挖矿规则是什么?

fil挖矿步骤教程是什么 fil挖矿规则是什么

网络攻防学习笔记 Day121

穿过生命散发芬芳

网络安全 8月日更

万题库小程序开发

(王经理)专业app小程序开发

Paxos理论介绍(1): 朴素Paxos算法理论推导与证明

OpenIM

重磅升级!融云推出 IM+RTC+X「全」通信解决方案

融云 RongCloud

开发者 音视频 通信 即时通讯

题库答题软件开发

(王经理)专业app小程序开发

绿色篮子小程序开发

(王经理)专业app小程序开发

e家帮系统开发有哪些功能?

ALVIS

爱购团购软件开发

(王经理)专业app小程序开发

百度智能云天工物联网支持多种类数据传输!MQTT助力数据、语音、视觉应用智能化

百度开发者中心

产品 最佳实践 前沿技术 企业资讯

Filecoin挖矿收益高涨,Filecoin挖矿收益怎么计算?

区块链 分布式存储 IPFS filecoin挖矿 filecoin收益

面试工长

escray

生活记录 8月日更 装修记

javaer 徒手撸一个 python 语言的分布式 rpc

awen

Python 微服务 RPC

美健日纪系统开发怎么做??

ALVIS

瞬间登上牛客网热榜榜首!腾讯内部68W字Netty全栈宝典简直太香了

Java 编程 架构 面试 Netty

美牙视界软件开发讲解

(王经理)专业app小程序开发

哒哒家政小程序开发多少钱?

ALVIS

皇家家政小程序开发怎么做?

ALVIS

Filecoin未来会涨到多少?Filecoin挖矿现在入场合适吗?

区块链 分布式存储 IPFS fil大涨 filecoin挖矿

小羽佳家政小程序开发

ALVIS

漫游语音识别技术——带你走进语音识别技术的世界

声网

语音识别

如何做好Clickhouse集群的监控覆盖?

BUG侦探

大数据 Clickhouse 监控系统

ipfs挖矿用什么app?ipfs挖矿收益计算器怎么看?

ipfs挖矿用什么app ipfs挖矿收益计算器怎么看

财经大课:商业的边界

石云升

8月日更 财经思维

从Java 9反向移植对象反序列化过滤器_Java_Abraham Marín Pérez_InfoQ精选文章