セキュリティ

概要

要約:
  • Curl® 言語には、エンド ユーザーの安全性を確保するためのセキュリティ ポリシーが多数あります。
  • これらのポリシーがアプレット開発を妨げることはほとんどありません。
Curl 言語は、ダウンロードされた実行可能コンテンツがユーザーのコンピュータ パワーを利用して実行されるように設計されています。ただし、アプレットにユーザー システムへの無制限なアクセスを許した場合、セキュリティ上の問題が生じます。悪意のあるアプレットは、情報の盗取やファイルの破壊を企てたり、システムを不安定にしたり、あるいは他のシステムへの攻撃を実行する可能性があります。
このような問題に対処するため、Curl 言語にはセキュリティに関する制限があり、これによってアプレットがユーザーのシステムに害を与えたり、個人情報に立ち入るのを阻止します。これらの制限は、アプレットによる障害の発生を防ぎつつ最大限の柔軟性を開発者に与えるように慎重に設計されています。アプレットがセキュリティ制限に違反した場合、SecurityException がスローされます。Curl® 言語で書かれたアプレットは、他の例外と同じ方法でセキュリティ例外をキャッチできます。したがって、アプレットはスローされた例外から回復することができます。アプレットはセキュリティ例外をオーバーライドできません。例外の詳細については、「例外」の章を参照してください。
セキュリティ制限で禁止されている操作をアプレットが実行する必要がある場合はほどんとありませんが、このようなときはアプレットに特権を与えるかどうかをユーザーに決定してもらうことができます。特権アプレットは、ユーザーのコンピュータ リソースへの無制限アクセスが可能です。詳細については、下記の「特権アプレット」を参照してください。
以下のセクションでは、対象となる Curl 言語の各部分に基づいてセキュリティ制限について説明します。

システムの制限

要約:
システム リソースへのアクセス制限により、アプレットによるシステム障害やデータ交換を回避します。
Curl 言語では、アプレットの一般的なシステム リソースへのアクセスについて多数の制限を設けています。アプレットは以下を実行できません。
これらの制限により、Curl® 実行環境 の管理外のコードを呼び出してアプレットが Curl 言語の他のセキュリティ制限を打破する危険性から逃れることができます。また、アプレットがシステム リソースを使い果たしてシステムを不安定にする可能性も予防しています。

ネットワーク アクセスの制限

要約:
  • アプレットは、Web サイトでアクセスするファイルを選択するようにユーザーに求めることができます。
  • アプレットはサイレント アクセスが許可されている Web サイトのファイルにのみアクセスできます。
  • アプレットは、それ自体を設置するホストだけにソケットを開くことができます。
  • アプレットはネットワーク接続を受信しません。
アプレットに Web サイトへの無制限のアクセスを許すと、ファイアウォールで保護されたローカル ネットワーク内でアプレットが動作する際に問題が発生する可能性があります。ファイアウォール内のコンピュータ上でアプレットが実行される場合、内部の Web サイトにある公開されるべきではない情報へのアクセスが可能になります。このような状況では、悪意のあるアプレットが内部 Web サイトの極秘情報ファイルにアクセスして、ローカル ネットワーク外にそれを送信する危険性が生じます。
内部 Web サイト上にある機密データをアプレットからのアクセスより守るため、Curl 言語は Curl アプレットによるネットワーク リソースへのアクセスを制限しています。アプレットがファイルにアクセスするには、ユーザーまたは Web サイトのいずれかから許可を得なければなりません。
Curl アプレットは、choose-location プロシージャを使用して、Web サイト上でアクセスするファイルを選択するようにユーザーに求めることができます。このプロシージャは Choose Location ダイアログを開いて、アプレットのアクセス先となるファイルの URL を入力するようにユーザーに求めます。アプレットがアクセスするファイルの選択権はユーザーにあることから、アプレットが安全にアクセスできる情報であることを確認する機会をユーザーに与えることになります。
ユーザーがファイルの URL を Choose Location ダイアログ ボックスに入力するとアプレットはアクセスが許可されます。choose-location の使用の詳細については、「ファイル ダイアログの作成」で choose-location や他のファイル ダイアログの使用に関する説明を参照してください。
アプレットは、curl-access.txt ファイルによりアプレットのアクセスを許可しているWeb サイト上のファイルに、サイレント アクセス (ユーザーに確認せずに) することができます。curl-access.txt が置かれていない Web サイトには、アプレットはアクセスできません (ただし、次で説明するようにイメージを除きます)。curl-access.txt が置かれている Web サイトには、ファイル内のディレクティブでアプレットのアクセスが許可されていればアクセスすることができます。curl-access.txt ファイルの詳細については、「Web サーバーの構成」の章の「アプレットから Web サイトへのアクセス」を参照してください。
Web サイトへのサイレント アクセスの制限に関する唯一の例外は image テキスト プロシージャです。アプレットは、image を使用して取得したイメージに含まれるデータにアクセスできないので、アプレットがイメージ ファイルにアクセスしてもあまり危険はありません。したがって、アプレットは image テキスト プロシージャを使用して、curl-access.txt ファイルがない Web サイトからのイメージを表示できます。
Web サイトに curl-access.txt ファイルが置かれていて、ディレクティブがアプレットのサイトへのアクセスを許可していない場合、アプレットはサイト上のイメージにアクセスできません。この場合、image 呼び出しは例外をスローしません。代わりに、実際のイメージが表示される場所に missing のイメージが表示されます。さらに、アプレット自体へのヒットを獲得します。アプレットのヒットがあまりに多くなると、curl-access.txt ファイルがない Web サイト上のファイルにはアクセスできなくなります。この手段により、image 以外の方法ではアクセスできないホストをアプレットが検出するのを防ぐことができます。
送信ソケット接続は、アプレットをロードするホストだけに制限されています。アプレットが接続可能なホスト上のソケットは限定されています (下記の「ソケットの制限」を参照してください)。また、「curl-access.txt およびソケット」で説明されているように、ホストはアプレットのアクセス承認が設定された curl-access.txt ファイルを置く必要があります。
アプレットは、他のホストからの接続を受信する AcceptorTCPSocket を開くことができません。この設定により、送信ソケットを使用した接続を許可しないホストからは、悪意のあるアプレットは接続を受信することができません。

ファイル アクセスの制限

アプレットは、そのダウンロード元である Web サイト上のファイルにのみアクセスできます (特権アプレット以外)。Web サーバーは、設置されている Web サイトの名前を宣言する必要があります。サーバーが Curl 実行環境 にその存在を知らせる方法の詳細は、「Web サーバーの構成」の章を参照してください。.
アプレットのダウンロード元ホスト以外のホストにアクセスした場合、またはアプレットによるファイルへのアクセスをホストが許可しない場合は、SecurityException がスローされます。

ソケットの制限

ソケット接続の作成に関するアプレットの能力は制限されています。アプレットで実行できるのは以下に限られています。
上記の一般的な制限の他にも、RTE ではアプレットが接続できるポートを制限しています。アプレットは、以下の例外を除き 1024 より下のポートへの TCP 接続を開くことができません。
ポート番号ポートの説明
70gopher
80HTTP
119netnews
194IRC
443HTTPS
アプレットは、以下のポートを除いて 1024 以上のポートへの TCP 接続を開くことができます。
ポート番号ポートの説明
1352Lotus Notes®
1524Ingres
1525、1527、1528 および 1529Oracle®
2401CVS client/server
2053Kerberos de-multiplexer
2105Kerberos encrypted rlogin
3306MySQL
6000 - 6063X11
7000 - 7009AFS
10081 - 10083Amanda
アプレットは、以下を除き 1024 より下のポートへの User Datagram Protocol (UDP) パケット送信ができません。
ポート番号ポートの説明
70gopher
80HTTP
194IRC
443HTTPS
アプレットは、以下を除き 1024 以上のポートへ UDP パケットを送信できます。
ポート番号ポートの説明
1352Lotus Notes®
1524Ingres
1525、1527、1528、および 1529Oracle®
2401CVS client/server
3306MySQL
7000-7009AFS
10080, 10081Amanda

ファイル アクセスの制限

要約:
  • アプレットは、ユーザーが選択するローカル ファイル システムのファイルに対してのみ書き込みまたは読み取りができます。
  • アプレットは、パーシスタント データを使用してユーザーへの確認なしに情報をローカルで保存することができます。
  • 最高 20 までのネットワーク接続またはファイルを同時に開くことができます。
アプレットは、許可がなければローカル ファイル システムにアクセスできません。この制限によりデータの盗用またはシステム ファイルの破損を防いでいます。アプレットは、choose-file または choose-multiple-files プロシージャを使用して、ユーザーからアクセスするファイルを要求します。ユーザーが 1 つまたは複数のファイルを選択すると、アプレットはそれらにアクセスできるようになります。アクセスの種類 (読み取り、変更、新規ファイルの作成) は、choose プロシージャに渡されるパラメータによって決まります。ユーザーに表示されるダイアログには、アプレットによるファイル アクセスの種類が明示されます。choose-file および choose-multiple-files の使用方法の詳細については、「ファイル ダイアログの作成」を参照してください。 アプレットは request-local-data-permission を使用して、ローカルマシンにデータを保存する許可をユーザーから得ることができます。
ユーザー設定、履歴、状態に関する情報などの少量のデータをアプレットに保存する必要がある場合、ファイルへの書き込み許可をユーザーに求める代わりにパーシスタント データを使用することを推奨します。パーシスタント データにより、ユーザー許可を得る必要なしにアプレットは少量の情報をユーザー システムに保存することができます。詳細は、「クライアント側パーシスタント データ 」の章を参照してください。
アプレットはファイル システム上のディレクトリを参照できず、ファイル システム内のパスを返すメソッドやプロシージャを使用できません。この制限によりアプレットはファイル システムの構造を調査できなくなっています。
ファイル システムからロードされたアプレットは、標準パッケージのインポートを除いてローカル ファイル システムのファイルを include または import できません。ローカルでロードされたアプレットがファイルを include、またはパッケージを import できるようにするには、ローカル Web サーバーを設定するか、あるいはユーザーがアプレットを含むディレクトリを特権ロケーション リストに追加することにより、特権アプレットに指定する必要があります (下記の「特権アプレット」を参照してください)。
上記の注意に加えて、アプレットは最高 20 までのネットワーク ハンドルまたはファイル ハンドルしか同時に開けないように制限されています。この制限には、アプレットがメソッドまたはプロシージャ呼び出しにより間接的に開くファイルまたはネットワーク接続も数えられます。20 を超えるファイルまたはネットワークの接続を同時に開こうとすると、SecurityException がスローされます。

ユーザー インターフェイスの制限

Curl 言語には、システムの安定性とユーザーのプライバシーを守る為にセキュリティ制限があります。これらの制限はアプレットのユーザー インターフェイスに影響を及ぼします。
特権無しに実行されるアプレットには、さらに制限が適用されます。一般的に、これらの制限はユーザーが気がつかないオブジェクトとの情報のやり取りを防ぐように設計されており、どの程度ビューが透過するかを制限したり、ビューがどの程度ディスプレイを覆うのかを制限します。非特権アプレットによって作成されたビューは、不透明度が 0.5 以上になります。装飾のないビューは、縦横共にディスプレイの 80% 以上を覆うことは出来ません。また、常に 1px 幅の境界を持ちます。詳細については、View.set-opacityView.defaultdecorations? キーワードの説明を参照してください。

特権アプレット

特権アプレットは、非特権アプレットの動作を限定するセキュリティ制限の制約を受けません。アプレットに特権が与えられるかどうかは、Curl RTE が管理する 特権ディレクトリのロケーション リストで決定されます。このリストには、Web サイト上またはファイル システム上のロケーションを含めることが できます。このリストのロケーションからロードされたアプレットに特権が与えられることになります。このリストに含まれないロケーションからロードされたアプレットは、通常のアプレット セキュリティ制限の対象になります。
注意: アプレットを特権付で実行する為には、アプレットを配信するサーバーには、Curl Pro サーバーライセンスが必要です。サーバー ライセンス を参照してください。
ユーザーは、Web サイト全体またはその中の特定のディレクトリだけを特権ロケーションにするかを選択できます。またユーザーは、アプレットの取得にSSL 接続が使用されるように要求できます。 SSL 接続では、データを暗号化してデータの傍受を防ぐとともに、署名付きの証明書によりホストが実際のシステムそのものであることを確認します。エンド ユーザーは、ローカル ファイル システムのディレクトリが特権アプレットを含むディレクトリであると指定することもできます。
アプレットによりロードされたコンテンツ (パッケージ内、インクルードされたファイル、elaborate プロシージャによりロードされたコンテンツなど) はすべてアプレットから特権を継承します。この結果、インクルードされたコードはアプレット自体で許可されていることだけを実行するように規制されます。
エンドユーザーは、Curl コントロール パネルを使用して Curl アプレットに特権を与えます。ユーザーがホストやディレクトリを特権データベースに追加する方法については、コントロール パネルのオンライン ヘルプを参照してください。Curl コントーロールパネルにある [ヘルプ]をクリックするとオンライン ヘルプを表示できます。
エンドユーザーは、電子署名された Curl アプレットに特権を与えることも可能です。 IDEドキュメンテーションのコード署名をご覧ください。