讲下 RMI 原理以及相关的漏洞
1. RMI 原理
RMI(Remote Method Invocation),是 Java 远程方法调用的缩写。简单来说,它是一种 Java 编程技术,允许你在一个 Java 虚拟机(JVM)上运行的代码,调用另一个不同 JVM 上的对象的方法。这使得分布式应用开发变得相对简单,因为你可以像调用本地对象一样调用远程对象的方法
RMI 的核心思想是存根(Stub)和骨架(Skeleton)
- 客户端(Client):
- 存根(Stub):这是一个本地代理对象,它实现了远程对象的接口。客户端调用远程方法时,实际上是在调用存根上的本地方法。存根负责将方法调用信息(方法名、参数等)打包,并发送给远程服务器
- 服务器端(Server):
- 远程对象(Remote Object):这是真正提供服务、执行方法的对象
- 骨架(Skeleton):一个中间层对象,它监听客户端的请求。当收到存根发来的请求时,骨架负责解析请求,找到相应的远程对象,调用其方法,并将结果打包返回给客户端