私は現在、ユーザーが動的にdllを選択し、アプリケーションがそのdll内のいくつかのメソッドを実行するアプリケーションを開発しています。(最初のリンクをたどると、.Net Frameworkを使用して一種のRobocodeゲームアプリケーションを開発していることがわかります)。
たとえば、バトルが始まると、run
dllのメソッドが実行されます。
runメソッドで指定されたものはすべて実行されるため、適用する必要のあるセキュリティ制約がかなりあります。
たとえば、dllをプログラムしたユーザーが、インターフェイスから適用可能なメソッド(ロボットが歩いたり発射したりするために使用するメソッドなど)だけを使用するのではなく、ファイルを取得し、場合によっては削除するメソッドを呼び出す場合などです。ハードディスクからファイル...そして別のユーザーがそのdllを自分のコンピューターにロードすると、それらのメソッドが自分のPCで呼び出され、自分のファイルがこの悪意のあるコードによって変更されます。
したがって、どのようなメソッドが呼び出されても、dllが開かれているコンピューターのハードディスクに影響を与えないように、このアプリケーションを一種のサンドボックス環境から実行する必要があります。
これをどのように始めるべきかについてのアイデアはありますか?
これらのdllをロードし、それらのメソッドを呼び出す方法の例を次に示します。
for (int i = 0; i < robotList.Count; i++)
{
IRunnable o = robotList[i];
new Thread(delegate()
{
o.run();
}).Start();
}