5

アプリケーションでエンドユーザースクリプト(サーバー側で実行される)を提供したいと思います。私は周りを読んでいて、サンドボックス化は私が思っていたよりもはるかに問題であることがわかりました。

私は言語が何であるかを本当に気にしません。LUA、Python、JavaScript、私は何でも読めるもので大丈夫です。

信頼できないスクリプトで関数を実行し、情報を渡してさらに取得するのはどれほど難しいですか?JVM Security Managerは使用できず、Pythonはほとんどサンドボックス化できないことを読みましたが、このトピックに関する知識はほとんどなく、ソースを実際に判断することはできません。

たとえば、JSON(たとえば、Java、Python、さらにはnode.jsから)を取得するJSの関数を解釈し、返されたJSONを取得するにはどうすればよいですか?

私は、自分でpythonishi-just-know-it-will-suck言語インタープリターを実装することを避けたいと思います。

4

2 に答える 2

4

Luaは優れたサンドボックス機能を備えており、クリーンでシンプルです。

特定の環境でコードを実行できるsetfenv()関数があります。信頼できないコードは、特定の環境にあるものにのみアクセスできます。
などのC関数の場合、string.repLua関数に置き換えるか、カスタムメモリアロケータをに提供することで、メモリの過剰消費を防ぐことができますlua_newstate

また、信頼できるコードにLuaを使用し、信頼できないコードとインターフェイスさせる場合は、コルーチンを使用debug.sethookしてCPU使用率を制御できます。

LuaWikiには簡単なサンプルサンドボックスがあります。luaライブデモ
ソースコードも興味深いかもしれません。

于 2012-04-13T14:34:46.197 に答える
1

Tclには非常に強力なsanboxモデルがあり、おそらくエンドユーザーのスクリプト作成に適した言語の1つです。詳細については、安全なインタプリタのマニュアルページを参照してください。

于 2012-04-15T00:53:13.720 に答える