Google App Engine サンドボックスはどのように機能しますか?
このような独自のサンドボックスを作成するにはどうすればよいですか (クライアントがディスク ドライブをフォーマットする機能を与えずに、エンジンでアプリを安全に実行できるようにするため)。クラスローダーの魔法、バイト操作などですか?
Google App Engine サンドボックスはどのように機能しますか?
このような独自のサンドボックスを作成するにはどうすればよいですか (クライアントがディスク ドライブをフォーマットする機能を与えずに、エンジンでアプリを安全に実行できるようにするため)。クラスローダーの魔法、バイト操作などですか?
おそらく、制限付きのクラスローダとJava セキュリティ アーキテクチャの完全な理解の組み合わせが必要になるでしょう。おそらく、非常に厳密な SecurityManager を指定して JVM を実行するでしょう。
Java の場合、ほとんどの場合、利用可能なライブラリを制限することによって行われていると思います。Java にはポインターの概念がなく、ネイティブにコンパイルされたコード (JVM バイトコードのみ) をアップロードできないため、サンドボックスから抜け出すことはできません。タイトなプロセス スケジューリングを追加すれば完了です。
一番難しいのは、ライブラリを選択して、安全を保ちながら便利なものにすることだと思います。
Python の場合、安全性を考慮して設計されていなかったため、VM 自体を変更する必要がありました。幸いなことに、彼らにはグイド自身がそれを行うことができます。
ディスク ドライブをフォーマットする機能をクライアントに与えずに、クライアントがエンジンでアプリを安全に実行できるようにする
これは、Java Security Manager を使用して簡単に実現できます。例については、この回答を参照してください。