1

高い権限を持つアプレットを展開したい場合は、署名する必要があります。そのために、証明書が作成され、jar ファイルが jarsigner で署名されます。その後、HTML コードで、以前に署名したコード、コードベース、およびアーカイブ (jar) を指定する必要があります。

ただし、次の 2 つの機能を果たすサーブレットを作成しました。

  1. これは、コードベースが指す URL にあり、クラス バイトコードをアプレットに提供します。
  2. 同じサーブレットもシリアライゼーションを使用してアプレットと通信します。これにより、アプレットがクラスを取得するたびに、サーブレットに戻るコードベースに移動することがわかりません。
ほとんどミニ RMI セットアップに似ていますが、よりシンプルです。この力を見ていただければ幸いです。

残念ながら、署名付きアプレットの場合、アーカイブが必要です。これで、サーブレットも Certificate オブジェクトをロードして、アプレットにも送信できるようになりました。セットアップは次のとおりです。ある時点で、アプレットはクラスのバイトコードを受け取り、証明書も持っています。アプレットがその証明書を使用して受信したすべてのクラスをインスタンス化できると便利です (そうしないと、jar からのコードは署名されており、外部はユーザーに不快なメッセージを表示するものではありません)。

Java 愛好家の皆さんへの質問です。 バイトコード データと証明書を使用してクラスを署名付きオブジェクトとしてインスタンス化し、プラグインが [セキュリティ] ダイアログを表示し、証明書を受け入れ、オブジェクトの権限を昇格させる方法はありますか? 私が見つけたのは、コードベース URL と証明書を受け入れ、署名プロセスに不可欠なクラス CodeSource があることです。私が確信していないのは、アプレット内のクラスのロードを傍受して、アーカイブを介して JAR ファイルを介して取得されていない追加の証明書をインストールする方法です。

あなたは何を言っていますか?本当にありがとう。

4

1 に答える 1

0

オンザフライで生成されるローディング クラスの使用については確信が持てません。

そうは言っても、クラスにフルアクセスを持たせる簡単で危険な方法は、.. を呼び出すことです。

System.setSecurityManager(null);

.. アプレット init() の初期段階で。サンドボックス化されたアプレットでは失敗しますが、信頼できるアプレットでは機能します。

目的の結果を達成するためのより良い (より安全な) 方法は、カスタム セキュリティ マネージャーを実装することです。これは、サーバーからのコードにのみ昇格された特権を提供するものです。

セキュリティ マネージャの実装は困難に思えるかもしれませんが、単純なものを作成するのは簡単です。例については、comp.lang.java.programming からのSystem.ext()スレッドへのこの返信を参照してください。

于 2011-01-13T06:46:59.677 に答える