【问题标题】:How to deny the Client to unbind the RMI Registry?如何拒绝客户端解绑RMI Registry?
【发布时间】:2012-04-13 13:09:04
【问题描述】:

我编写了一个简单的 RMI 应用程序。我发现客户端获取RMI-Registry后可以成功执行Registry.unbind()方法。在我看来,这是一个安全风险。为什么允许客户端取消绑定远程注册表中的名称?一个邪恶的人可以通过修改代码来做到这一点,而我的所有其他客户端都无法连接到我的服务器,因为绑定已被删除。

是否有可能否认这一点,也许在 Java 政策中?

【问题讨论】:

    标签: java rmi rmiregistry


    【解决方案1】:

    只有当客户端与注册表在同一主机上运行时,才会发生这种情况。如果您自己的客户遇到安全问题,那么您遇到的问题比 RMI 可以为您解决的任何问题都要严重。

    【讨论】:

      【解决方案2】:

      来自Javadoc 用于注册表:

      注册表实现可以选择限制对部分或全部的访问 它的方法(例如,改变注册表的方法 绑定可能仅限于来自本地主机的调用)。 如果 Registry 方法选择拒绝对给定调用的访问, 它的实现可能会抛出 AccessException,这(因为它 extends RemoteException) 将被包装在一个 ServerException 中 被远程客户端捕获。

      如果您愿意,您可以选择阻止这种行为(它实际上是大多数注册表实现的默认行为)。

      【讨论】:

        猜你喜欢
        • 2012-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-27
        • 2013-12-09
        • 2014-04-20
        相关资源
        最近更新 更多