2

環境:

Lua では、新しい Lua VM を作成するのは簡単で非常に安価 (4kb のメモリ) です。したがって、安価な lua の「jail」を作成するのは簡単です。次に、信頼できないコードが正しく動作しない場合は、Lua VM を強制終了します。

私はhttps://github.com/Licenser/clj-sandboxを認識していますが、Javaをラップしているように見えます...これにより、信頼できないコードスレッドがネイティブJavaスレッドになり、殺すことができなくなります。

質問:

安価で軽量な Clojure 刑務所を作成する方法はありますか?

4

1 に答える 1

3

私は、clj-sandbox を再考したようなclojailという小さなライブラリの (共同) 作成者です。Java サンドボックスも利用しますが、Clojure 固有のものをサンドボックス化するための機能も提供します。tryclj4clojureはそれを利用します。

残りの部分の意味がわかりません。JVM サンドボックスは、I/O を防止できるという点で優れています。Clojail は、長時間実行されるコードを防ぐためにタイムアウトを許可することで、残りの方法を実行します。あなたが言っているのが「人々はスレッドを作成でき、私はそれらを殺すことはできない」ということであれば、clojail はサンドボックス内で作成されたスレッドを強制終了し、通常は迷子になったスレッドが逃げるのを防ぐために最善を尽くします。JVM サンドボックス (および clojail 固有のもの) は、危険なコードがスレッド上で実行されるのを防ぎます。

要約すると、clojail をチェックしてください。それはあなたが必要とするものかもしれません。それはほとんどの目的に十分であり、刑務所のための町で唯一のゲームです (維持されていない clj-sandbox を除いて)。これは常に最適なソリューションとは限りませんが、通常は最も簡単です。

clojail が必要なことを行わない場合の次のステップは、JVM サンドボックスの使用と JVM のスピンオフを含む独自の監獄メカニズムを展開することです。これには大きなオーバーヘッドがあるため、とにかく可能であれば避けたいと思います。間違いなく、もう 4KB Luatown にはありません。;)

于 2012-06-09T10:22:41.307 に答える