2012-04-13 5 views
0

Я пишу простое приложение RMI. Я узнал, что клиент после получения RMI-реестра может успешно выполнить метод Registry.unbind(). Это, на мой взгляд, риск для безопасности. Почему клиенту разрешено отменить имя в удаленном реестре? Злой человек может сделать это с изменением кода, и все мои другие клиенты не могут подключиться к моему серверу, потому что привязка удалена.Как отказать Клиенту отвязать реестр RMI?

Есть ли возможность отрицать это, возможно, в политике Java?

ответ

1

Это может произойти только в том случае, если клиент работает на том же хосте, что и в реестре. Если у вас есть проблемы с безопасностью со своими клиентами, у вас гораздо больше проблем, чем что-либо, что может решить RMI для вас.

0

Из Javadoc для реестра:

Реализация реестра может ограничить доступ к некоторым или всем его методов (например, методы, которые мутировать привязок в реестре может быть ограничено вызовов, исходящих из локальный хост). Если метод реестра решает запретить доступ для данного вызова, то его реализация может вызывать AccessException, который (поскольку он extends RemoteException) будет обернут в исключение ServerException, когда поймает удаленный клиент.

У вас есть возможность предотвратить это поведение, если вы так решите (его поведение по умолчанию для большинства реестров).

Смежные вопросы