RMI:注册管理机构安全问题

时间:2016-08-06 12:42:27

标签: java security rmi

假设我有以下代码:

class Foo implements FooRemote{
 private String string;
}

class Boo implements BooRemote{
/**
 * This method is directly called from RMI client only
 */
public Foo getMyFoo(){
  Foo foo=new Foo();
  UnicastRemoteObject.exportObject(foo,somePort);
  return foo;//the reference is returned directly to client
}
}

如您所见,我没有将无论如何添加到注册表中,例如我没有这个:

registry.rebind(url, fooStub);

我是否可以100%确定在所有RMI客户端中,对创建的foo的每个实例的访问权限只有一个客户端(谁调用该方法)并且没有其他人可以获得对此对象的引用(通过注册或其他方式)并使用它?

P.S。请在答案yesno中加入。

1 个答案:

答案 0 :(得分:0)

  

我是否可以100%确定在所有RMI客户端中,对创建的foo的每个实例的访问权限只有一个客户端(谁调用该方法)并且没有其他人可以获得对此对象的引用(通过注册表或不知何故)并使用它?

是。它不在注册表中,因为你没有把它放在那里。唯一可见的引用是您返回给客户端的引用。