アプレットの能力と制約事項を理解する |
Java 環境の主な目標の 1 つは、ブラウザユーザに対し、どのようなアプレットでも 安全に実行できると感じてもらうことである。 この目標を達成するために、我々は過剰とも思えるほどアプレットの能力を制限する ところから慎重に作業を開始した。 しだいに、アプレットはさらに多くの能力を獲得していくはずである。このページでは、アプレットの現在のセキュリティ制約事項について、それらがアプレットのデザインにどう影響するかという観点から説明する。 アプレットのセキュリティに関する詳細については、マリアンヌ・ミューラー著の秀逸な資料があるのでそれを参照する。
しばしば尋ねるられる質問 -- アプ レットのセキュリティ (原題: Frequently Asked Questions - Applet Security)各 Applet ビューワーは、アプレットのセキュリティ違反を検査する SecurityManager オブジェクトをもっている。 SecurityManager は違反を検出すると、SecurityException をあげる。
現在のところ、SecurityExceptions は決してアプレットには到達しない。 もし到達するようになれば、SecurityException が発生した場合に "より安全な" (理想的で はないにしても) 手段へ移行して何らかの目的を達成できるよう、さまざまな方法を 試すコードを簡単に書けるようになる。このことは今はさほど重要な問題ではないが 、独自に SecurityManager を実装した Applet ビューワーの数が増えるにつれ、やがて重要な問題になるであろう。
アプレットの概説 レッスンで触れたように、既存の Applet ビューワー (Netscape Navigator のような Web ブラウザを含む) は以下の制約がある。
- アプレットはライブラリのロードやネイティブメソッドの定義はできない。
- アプレットが利用できるのは、それら自体の Java コードと、Applet ビューワーが提供する Java API だけである。 少なくとも、各 Applet ビューワーは java.* パッケージに定義された API へのアクセスを用意する必要がある。
- アプレットは通常、それを実行しているホスト上でファイルを読み書きすることはできない。
- 実際には JDK Applet ビューワーはこのルールにユーザ指定による若干の例外を認めている。しかし、Netscape Navigator では そのような例外を認めていない。 あらゆる Applet ビューワーにおいて、アプレットは、ファイル名ではなく完全な URL で指定されたファイルを読み込むことはできる。 ファイルへ書き込めないことを回避するには、アプレットの配信元ホスト上のアプリケーションに向けて、アプレットにデータを転送すればよい。 この ようなアプリケーションは各自のホストでデータファイルを書き込むことができる。 サーバ側アプリケーションを使って作業する方法については、他のプログラムとコミュニケートするを参照 する。
- アプレットは配信元であるホスト以外とはネットワーク接続を確立できない。
- この制約への回避策は、アプレットに配信元ホスト上のアプリケーションを使って作業させることである。 アプリケーションはネットワークのどこにでもそれぞれ接続を確立することができる。 例については、サーバを使用してセキュリティ制約事項に対処する を参照する。
- アプレットはその実行ホスト上でプログラムを起動することはできない。
- この制約に対しても、アプレットはサーバ側アプリケーションに処理を代行させることができる。
- アプレットはシステム設定項目の一部しか読み込めない。
- 詳細については、システム設定項目を読み込む を参照する。
- アプレットが起動するウインドウはアプリケーションが起動するウィンドウと外観が異なる。
- アプレットのウィンドウは警告テキストと、色付けされたバーかイメージのどちらかをもっている。 ユーザはこれを参考にして、アプレットのウィンドウと信用できるアプリケーションのウィンドウを区別できる。
アプレットの能力と制約事項を理解する |