0

より制限されたバージョンの Java を使用するゲーム内コード IDE を作成することを考えています。たとえば、I/O ストリーム API を使用したくありません。これは可能ですか?

また、 inb4 this . それはまだ能力を制限するのには役立ちません.愚かな/邪悪な学生だけです.XD.

4

3 に答える 3

2

コンパイラを制限することは1つの可能性ですが、おそらく最も簡単な方法ではありません。-bootclasspathオプションを指定してコンパイラーを呼び出して、JREのrt.jarのスリム化バージョンを提供することができます。次に、禁止されているクラスを使用すると(または、実際には、制限されたjarファイルに含まれていないクラスを使用すると)コンパイラエラーが発生します。

ランタイムセキュリティマネージャーを使用し、学生のコードに制限付きのアクセス許可のみを与えることをお勧めします。生徒のクラスに実際に必要な権限のみを付与し(解決するタスクによってはほとんどない可能性があります)、標準APIのほとんどを使用しながら、悪意のあることを行うことはできません。外部システムとのインターフェースがない限り。

もちろん、これでも無限ループを防ぐことはできませんが、実際には不可能です。

于 2012-04-21T21:36:36.497 に答える
2

java.policyをカスタマイズできます。ここで、Javaアプリケーションで使用できるクラスを設定できます。ポリシーに存在しないクラスを生徒が使用すると、セキュリティ例外がスローされます。

于 2012-04-19T20:51:57.973 に答える
0

「使用しない」という意味によって少し異なります。その IDE 内に記述されたコードがストリーム API へのアクセスを許可されていない (IDE 自体ではない) 場合は、クラスまたはパッケージ全体へのアクセスを制限できる独自のクラスローダーをいつでも提供できます。

于 2012-04-19T20:45:02.617 に答える