0

簡単な RMI アプリケーションを作成します。RMI-Registry を取得した後のクライアントは、Registry.unbind() メソッドを正常に実行できることがわかりました。私の意見では、これはセキュリティ上のリスクです。クライアントがリモート レジストリで名前のバインドを解除できるのはなぜですか? 悪意のある人物がコードを変更してこれを行うことができ、バインディングが削除されたため、他のすべてのクライアントがサーバーに接続できません。

おそらくJavaポリシーで、これを否定する可能性はありますか?

4

2 に答える 2

1

これは、クライアントがレジストリと同じホストで実行されている場合にのみ発生する可能性があります。自分のクライアントでセキュリティの問題が発生している場合は、RMIが解決できるものよりもはるかに大きな問題があります。

于 2012-04-14T09:36:57.200 に答える
0

レジストリのJavadocから:

レジストリの実装は、そのメソッドの一部またはすべてへのアクセスを制限することを選択できます (たとえば、レジ​​ストリのバインディングを変更するメソッドは、ローカル ホストからの呼び出しに制限される場合があります)。レジストリ メソッドが特定の呼び出しに対するアクセスを拒否することを選択した場合、その実装は AccessException をスローする場合があります。これは (RemoteException を拡張するため)、リモート クライアントによってキャッチされたときに ServerException にラップされます。

必要に応じて、この動作を防止するオプションがあります (実際には、ほとんどのレジストリ実装のデフォルトの動作です)。

于 2012-04-13T14:39:23.777 に答える